Note that there are some explanatory texts on larger screens.

plurals
  1. POxslt prepend child tag
    primarykey
    data
    text
    <p>I'm stuck on this one. Can't figure out how to prepend an child element and keep the attributes of the enclosing element.</p> <p>I Have</p> <pre><code>&lt;GXXML&gt; &lt;FEATURECLASS ProgID="mmGeoDatabase.MMFeatureClass.1"&gt; &lt;SUBTYPE ProgID="mmGeoDatabase.MMSubType.1"&gt; &lt;FIELD ProgID="mmGeoDatabase.MMField.1"&gt; &lt;AUTOVALUE ProgID="mmGeoDatabase.MMAutoValue.1" EDITEVENT="mmEventFeatureCreate" EDITORTYPE="0"&gt; &lt;AVDISPLAYORDER&gt;0&lt;/AVDISPLAYORDER&gt; &lt;AVEDMTABLESUBTYPE&gt;888888&lt;/AVEDMTABLESUBTYPE&gt; &lt;AVEDMPROPERTYTYPE&gt;888888&lt;/AVEDMPROPERTYTYPE&gt; &lt;/AUTOVALUE&gt; &lt;/FIELD&gt; &lt;FIELD ProgID="mmGeoDatabase.MMField.1"&gt; &lt;AUTOVALUE ProgID="mmGeoDatabase.MMAutoValue.1" EDITEVENT="mmEventFeatureCreate" EDITORTYPE="0"&gt; &lt;AVDISPLAYORDER&gt;0&lt;/AVDISPLAYORDER&gt; &lt;AVEDMTABLESUBTYPE&gt;888888&lt;/AVEDMTABLESUBTYPE&gt; &lt;AVEDMPROPERTYTYPE&gt;888888&lt;/AVEDMPROPERTYTYPE&gt; &lt;/AUTOVALUE&gt; &lt;/FIELD&gt; &lt;/SUBTYPE&gt; &lt;/FEATURECLASS&gt; &lt;/GXXML&gt; </code></pre> <p>And I want this</p> <pre><code>&lt;GXXML&gt; &lt;FEATURECLASS ProgID="mmGeoDatabase.MMFeatureClass.1"&gt; &lt;SUBTYPE ProgID="mmGeoDatabase.MMSubType.1"&gt; &lt;FIELD ProgID="mmGeoDatabase.MMField.1"&gt; &lt;AUTOVALUE ProgID="mmGeoDatabase.MMAutoValue.1" EDITEVENT="mmEventFeatureCreate" EDITORTYPE="0"&gt; &lt;AUTOGENID&gt;{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}&lt;/AUTOGENID&gt; &lt;AUTOVALUENAME&gt;ESRI Field Rules&lt;/AUTOVALUENAME&gt; &lt;AVDISPLAYORDER&gt;0&lt;/AVDISPLAYORDER&gt; &lt;AVEDMTABLESUBTYPE&gt;888888&lt;/AVEDMTABLESUBTYPE&gt; &lt;AVEDMPROPERTYTYPE&gt;888888&lt;/AVEDMPROPERTYTYPE&gt; &lt;/AUTOVALUE&gt; &lt;/FIELD&gt; &lt;FIELD ProgID="mmGeoDatabase.MMField.1"&gt; &lt;AUTOVALUE ProgID="mmGeoDatabase.MMAutoValue.1" EDITEVENT="mmEventFeatureCreate" EDITORTYPE="0"&gt; &lt;AUTOGENID&gt;{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}&lt;/AUTOGENID&gt; &lt;AUTOVALUENAME&gt;ESRI Field Rules&lt;/AUTOVALUENAME&gt; &lt;AVDISPLAYORDER&gt;0&lt;/AVDISPLAYORDER&gt; &lt;AVEDMTABLESUBTYPE&gt;888888&lt;/AVEDMTABLESUBTYPE&gt; &lt;AVEDMPROPERTYTYPE&gt;888888&lt;/AVEDMPROPERTYTYPE&gt; &lt;/AUTOVALUE&gt; &lt;/FIELD&gt; &lt;/SUBTYPE&gt; &lt;/FEATURECLASS&gt; &lt;/GXXML&gt; </code></pre> <p>This Xpath choses elements where I want to insert "missing" child elements</p> <pre><code>GXXML/FEATURECLASS/SUBTYPE//FIELD/AUTOVALUE[@EDITEVENT='mmEventFeatureCreate'][not(AUTOGENID)] </code></pre> <p>When I run my xslt I either loses attributes, but child element is in the right order or the chile element i not in the right order (dtd does not validate) but the enclosing tag keeps the attributes.</p> <p>An xslt that shows this:</p> <pre><code>&lt;?xml version="1.0" ?&gt; &lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt; &lt;xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/&gt; &lt;xsl:template match="*"&gt; &lt;xsl:copy&gt; &lt;xsl:apply-templates select="@*|node()"/&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;xsl:template match="@*|text()|comment()|processing-instruction()"&gt; &lt;xsl:copy-of select="."/&gt; &lt;/xsl:template&gt; &lt;xsl:template match="GXXML/FEATURECLASS/SUBTYPE/FIELD[1]/AUTOVALUE[@EDITEVENT='mmEventFeatureCreate'][not(AUTOGENID)]"&gt; &lt;xsl:copy&gt; &lt;xsl:apply-templates select="node()|@*"/&gt; &lt;AUTOGENID&gt;{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}&lt;/AUTOGENID&gt; &lt;AUTOVALUENAME&gt;ESRI Field Rules&lt;/AUTOVALUENAME&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;xsl:template match="GXXML/FEATURECLASS/SUBTYPE/FIELD[2]/AUTOVALUE[@EDITEVENT='mmEventFeatureCreate'][not(AUTOGENID)]"&gt; &lt;xsl:copy&gt; &lt;AUTOGENID&gt;{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}&lt;/AUTOGENID&gt; &lt;AUTOVALUENAME&gt;ESRI Field Rules&lt;/AUTOVALUENAME&gt; &lt;xsl:apply-templates select="node()|@*"/&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p>The output I get from my xslt:</p> <pre><code>&lt;GXXML&gt; &lt;FEATURECLASS ProgID="mmGeoDatabase.MMFeatureClass.1"&gt; &lt;SUBTYPE ProgID="mmGeoDatabase.MMSubType.1"&gt; &lt;FIELD ProgID="mmGeoDatabase.MMField.1"&gt; &lt;AUTOVALUE ProgID="mmGeoDatabase.MMAutoValue.1" EDITEVENT="mmEventFeatureCreate" EDITORTYPE="0"&gt; &lt;AVDISPLAYORDER&gt;0&lt;/AVDISPLAYORDER&gt; &lt;AVEDMTABLESUBTYPE&gt;888888&lt;/AVEDMTABLESUBTYPE&gt; &lt;AVEDMPROPERTYTYPE&gt;888888&lt;/AVEDMPROPERTYTYPE&gt; &lt;AUTOGENID&gt;{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}&lt;/AUTOGENID&gt; &lt;AUTOVALUENAME&gt;ESRI Field Rules&lt;/AUTOVALUENAME&gt; &lt;/AUTOVALUE&gt; &lt;/FIELD&gt; &lt;FIELD ProgID="mmGeoDatabase.MMField.1"&gt; &lt;AUTOVALUE&gt; &lt;AUTOGENID&gt;{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}&lt;/AUTOGENID&gt; &lt;AUTOVALUENAME&gt;ESRI Field Rules&lt;/AUTOVALUENAME&gt; &lt;AVDISPLAYORDER&gt;0&lt;/AVDISPLAYORDER&gt; &lt;AVEDMTABLESUBTYPE&gt;888888&lt;/AVEDMTABLESUBTYPE&gt; &lt;AVEDMPROPERTYTYPE&gt;888888&lt;/AVEDMPROPERTYTYPE&gt; &lt;/AUTOVALUE&gt; &lt;/FIELD&gt; &lt;/SUBTYPE&gt; &lt;/FEATURECLASS&gt; &lt;/GXXML&gt; </code></pre> <p>Edit after Tim C's answer: This is the xslt that gives the desired output</p> <pre><code>&lt;?xml version="1.0" ?&gt; &lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt; &lt;xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/&gt; &lt;xsl:template match="*"&gt; &lt;xsl:copy&gt; &lt;xsl:apply-templates select="@*|node()"/&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;xsl:template match="@*|text()|comment()|processing-instruction()"&gt; &lt;xsl:copy-of select="."/&gt; &lt;/xsl:template&gt; &lt;xsl:template match="GXXML/FEATURECLASS/SUBTYPE//FIELD/AUTOVALUE[@EDITEVENT='mmEventFeatureCreate'][not(AUTOGENID)]"&gt; &lt;xsl:copy&gt; &lt;xsl:apply-templates select="@*"/&gt; &lt;AUTOGENID&gt;{DE2DCE92-8CCF-42DB-B9F9-89D1DE5EDE6A}&lt;/AUTOGENID&gt; &lt;AUTOVALUENAME&gt;ESRI Field Rules&lt;/AUTOVALUENAME&gt; &lt;xsl:apply-templates select="node()"/&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload