2016-06-08 6 views
1

Ich habe eine lange Datei von JSON in XML konvertiert, auf meine Anfrage hin. Ich möchte es in mehrere Dateien basierend auf einem Element namens "Objekt" teilen und "Objekt/Name", ein Kind-Element, als Dateiname verwenden. Es gibt keine Attribute in der Datei, die ich verwenden kann. Alle Beispiele, die ich gefunden habe, verwenden eine Art ID-Attribut. Im folgenden Beispiel möchte ich, dass die Ausgabedatei alle "Objekt" -Daten enthält, einschließlich Element-Tags. Die Ausgabedatei sollte "NewMethod.xml" seinXSLT: Wie teilt man eine Datei in mehrere Dateien auf und verwendet Elemente in der Quelldatei?

Danke für jede Hilfe, die Sie geben können.

Ein verkürztes Beispiel (Original sehr lang ist) eines einzelnen Objektknoten ist:

<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> 

Antwort

1

Prozess alle object Elemente und ein Ergebnis Dokument erstellen z.B.

<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

Vielen Dank Martin! –

Verwandte Themen