我有一个元素名称"争议;并且想要添加新的元素名称";记录";元素下方。例如:当前的XML是使用ssis技术的这种格式
<root>
<Grade></Grade>
<Fuel>
<Quantity/>
<Additional/>
<Dispute>0</Dispute>
</Fuel>
<Fuel>
<Quantity/>
<Additional/>
<Dispute>1</Dispute>
</Fuel>
</root>
Need to add new element under dispute.
<root>
<Grade></Grade>
<Fuel>
<record>1</record>
<Quantity/>
<Additional/>
<Dispute>0</Dispute>
</Fuel>
<Fuel>
<record>2</record>
<Quantity/>
<Additional/>
<Dispute>1</Dispute>
</Fuel>
</root>
XSLT无法添加属性值为1和2 的记录元素
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- Identity transform -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Dispute">
<Dispute>0</Dispute>
copy-of select="."/>
<record>1</record>
</xsl:template>
<xsl:template match="Dispute">
<Dispute>1</Dispute>
copy-of select="."/>
<record>2</record>
</xsl:template>
</xsl:stylesheet>
尝试以下操作:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Dispute">
<xsl:copy-of select="."/>
<record>
<xsl:number count="Fuel"/>
</record>
</xsl:template>
</xsl:stylesheet>
您没有指定用于填充添加的record
元素的确切逻辑。上面的例子将使用序列号。
添加:
我想要燃料元件正下方的记录元件
您可以将其重述为";刚好在CCD_ 2元素"之前;只需将第二个模板替换为:
<xsl:template match="Quantity">
<record>
<xsl:number count="Fuel"/>
</record>
<xsl:copy-of select="."/>
</xsl:template>
或者你可以改变策略并使用:
<xsl:template match="Fuel">
<xsl:copy>
<record>
<xsl:number/>
</record>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>