3
私はこの1つに固執しています。 子要素を先頭に付ける方法と、囲む要素の属性を保持する方法を理解できません。xslt子タグの前に
私は
<GXXML>
<FEATURECLASS ProgID="mmGeoDatabase.MMFeatureClass.1">
<SUBTYPE ProgID="mmGeoDatabase.MMSubType.1">
<FIELD ProgID="mmGeoDatabase.MMField.1">
<AUTOVALUE ProgID="mmGeoDatabase.MMAutoValue.1" EDITEVENT="mmEventFeatureCreate" EDITORTYPE="0">
<AVDISPLAYORDER>0</AVDISPLAYORDER>
<AVEDMTABLESUBTYPE>888888</AVEDMTABLESUBTYPE>
<AVEDMPROPERTYTYPE>888888</AVEDMPROPERTYTYPE>
</AUTOVALUE>
</FIELD>
<FIELD ProgID="mmGeoDatabase.MMField.1">
<AUTOVALUE ProgID="mmGeoDatabase.MMAutoValue.1" EDITEVENT="mmEventFeatureCreate" EDITORTYPE="0">
<AVDISPLAYORDER>0</AVDISPLAYORDER>
<AVEDMTABLESUBTYPE>888888</AVEDMTABLESUBTYPE>
<AVEDMPROPERTYTYPE>888888</AVEDMPROPERTYTYPE>
</AUTOVALUE>
</FIELD>
</SUBTYPE>
</FEATURECLASS>
</GXXML>
を持っていると私は、このXPathは、私は私が私のXSLTを実行すると、 "行方不明" の子要素
GXXML/FEATURECLASS/SUBTYPE//FIELD/AUTOVALUE[@EDITEVENT='mmEventFeatureCreate'][not(AUTOGENID)]
を挿入したい要素をchosesがこの
<GXXML>
<FEATURECLASS ProgID="mmGeoDatabase.MMFeatureClass.1">
<SUBTYPE ProgID="mmGeoDatabase.MMSubType.1">
<FIELD ProgID="mmGeoDatabase.MMField.1">
<AUTOVALUE ProgID="mmGeoDatabase.MMAutoValue.1" EDITEVENT="mmEventFeatureCreate" EDITORTYPE="0">
<AUTOGENID>{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}</AUTOGENID>
<AUTOVALUENAME>ESRI Field Rules</AUTOVALUENAME>
<AVDISPLAYORDER>0</AVDISPLAYORDER>
<AVEDMTABLESUBTYPE>888888</AVEDMTABLESUBTYPE>
<AVEDMPROPERTYTYPE>888888</AVEDMPROPERTYTYPE>
</AUTOVALUE>
</FIELD>
<FIELD ProgID="mmGeoDatabase.MMField.1">
<AUTOVALUE ProgID="mmGeoDatabase.MMAutoValue.1" EDITEVENT="mmEventFeatureCreate" EDITORTYPE="0">
<AUTOGENID>{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}</AUTOGENID>
<AUTOVALUENAME>ESRI Field Rules</AUTOVALUENAME>
<AVDISPLAYORDER>0</AVDISPLAYORDER>
<AVEDMTABLESUBTYPE>888888</AVEDMTABLESUBTYPE>
<AVEDMPROPERTYTYPE>888888</AVEDMPROPERTYTYPE>
</AUTOVALUE>
</FIELD>
</SUBTYPE>
</FEATURECLASS>
</GXXML>
をしたいです私は属性を失いますが、子要素は正しい順序になっています またはchile要素は正しい順序ではない(dtdは検証しない)が、囲むタグは属性を保持する。この示し
XSLT:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|text()|comment()|processing-instruction()">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="GXXML/FEATURECLASS/SUBTYPE/FIELD[1]/AUTOVALUE[@EDITEVENT='mmEventFeatureCreate'][not(AUTOGENID)]">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
<AUTOGENID>{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}</AUTOGENID>
<AUTOVALUENAME>ESRI Field Rules</AUTOVALUENAME>
</xsl:copy>
</xsl:template>
<xsl:template match="GXXML/FEATURECLASS/SUBTYPE/FIELD[2]/AUTOVALUE[@EDITEVENT='mmEventFeatureCreate'][not(AUTOGENID)]">
<xsl:copy>
<AUTOGENID>{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}</AUTOGENID>
<AUTOVALUENAME>ESRI Field Rules</AUTOVALUENAME>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
私は、XSLTから取得出力:
編集ティム・Cの答えの後<GXXML>
<FEATURECLASS ProgID="mmGeoDatabase.MMFeatureClass.1">
<SUBTYPE ProgID="mmGeoDatabase.MMSubType.1">
<FIELD ProgID="mmGeoDatabase.MMField.1">
<AUTOVALUE ProgID="mmGeoDatabase.MMAutoValue.1" EDITEVENT="mmEventFeatureCreate" EDITORTYPE="0">
<AVDISPLAYORDER>0</AVDISPLAYORDER>
<AVEDMTABLESUBTYPE>888888</AVEDMTABLESUBTYPE>
<AVEDMPROPERTYTYPE>888888</AVEDMPROPERTYTYPE>
<AUTOGENID>{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}</AUTOGENID>
<AUTOVALUENAME>ESRI Field Rules</AUTOVALUENAME>
</AUTOVALUE>
</FIELD>
<FIELD ProgID="mmGeoDatabase.MMField.1">
<AUTOVALUE>
<AUTOGENID>{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}</AUTOGENID>
<AUTOVALUENAME>ESRI Field Rules</AUTOVALUENAME>
<AVDISPLAYORDER>0</AVDISPLAYORDER>
<AVEDMTABLESUBTYPE>888888</AVEDMTABLESUBTYPE>
<AVEDMPROPERTYTYPE>888888</AVEDMPROPERTYTYPE>
</AUTOVALUE>
</FIELD>
</SUBTYPE>
</FEATURECLASS>
</GXXML>
:これは、所望の出力を与えるXSLTがある
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|text()|comment()|processing-instruction()">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="GXXML/FEATURECLASS/SUBTYPE//FIELD/AUTOVALUE[@EDITEVENT='mmEventFeatureCreate'][not(AUTOGENID)]">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<AUTOGENID>{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}</AUTOGENID>
<AUTOVALUENAME>ESRI Field Rules</AUTOVALUENAME>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>