2016-06-08 1 views
1

У меня есть длинный файл, преобразованный из JSON в XML, по моей просьбе. Я хочу разбить его на несколько файлов на основе элемента, называемого «объект», и использовать «object/name», дочерний элемент, как имя файла. В файле нет атрибутов, которые я могу использовать. Все примеры, которые я нашел, используют некоторый атрибут идентификатора. В приведенном ниже примере я хотел бы, чтобы выходной файл содержал все «объекты», включая теги элементов. Выходной файл должен быть «NewMethod.xml»XSLT: как разбить файл на несколько файлов и использовать элементы в исходном файле?

Спасибо за любую помощь, которую вы можете дать.

Усеченный пример (оригинал очень длительный) одного узла объекта является:

<objects> 
<object> 
    <operations> 
     <operation>create</operation> 
    </operations> 
    <enums> 
    </enums> 
    <name>NewMethod</name> 
    <parent /> 
    <fields> 
     <field> 
      <create_required>true</create_required> 
      <name>name</name> 
      <datatype /> 
      <is_immutable>false</is_immutable> 
      <enum_type /> 
      <is_list>false</is_list> 
      <rest_revision>0</rest_revision> 
      <range /> 
      <is_read_only>false</is_read_only> 
      <null_value /> 
      <dict_key /> 
      <object_types /> 
      <type>string</type> 
      <compound_type /> 
     </field> 
     <fields> 
      <ref_pattern>/abc/abc-{method_id}</ref_pattern> 
      <ids> 
       <id>method_id</id> 
      </ids> 
      <ref_create_pattern>/abc/abc-new</ref_create_pattern> 
      <compounds> 
      </compounds> 
      <rest_revision>0</rest_revision> 
      <alias_of /> 
      <children> 
       <child>childa</child> 
       <child>childb</child> 
      </children> 
      <delete_rest_revision>0</delete_rest_revision> 
      <ref_collection_pattern>/abc</ref_collection_pattern> 
</object> 

ответ

1

процесса всех object элементов и создавать результирующий документ, например,

<xsl:template match="/"> 
    <xsl:apply-templates select="//object"/> 
</xsl:template> 

<xsl:template match="object"> 
    <xsl:result-document href="{name}.xml"> 
    <xsl:copy-of select="."/> 
    </xsl:result-document> 
</xsl:template> 
+0

Большое спасибо Мартину! –