我需要在XML中保留少量值,并且需要通过XSLT添加新节点。
需要保留价值,并且需要添加新选项。
如何实现这一目标。以下是我的代码。
XML
<?xml version="1.0" encoding="utf-8"?>
<datas>
<data key="key1">
<value>a</value>
<options>
<option>a</option>
<option>b</option>
<option>c</option>
</options>
</data>
<data key="key2">
<value>z</value>
<options>
<option>x</option>
<option>y</option>
<option>z</option>
</options>
</data>
</datas>
XSLT
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="datas">
<datas>
<data key="key1">
<value>
<xsl:value-of select="/datas/data[key = 'key1']/value" />
</value>
<options>
<option>a</option>
<option>b</option>
<option>c</option>
<option>d</option>
</options>
</data>
<data key="key2">
<value>
<xsl:value-of select="/datas/data[key = 'key2']/value" />
</value>
<options>
<option>x</option>
<option>y</option>
<option>z</option>
</options>
</data>
</datas>
</xsl:template>
</xsl:stylesheet>
<option>d</option>
没有被添加。
有人可以帮忙吗?
由于
答案 0 :(得分:0)
而不是:
<xsl:value-of select="/datas/data[key = 'key1']/value" />
你需要:
<xsl:value-of select="/datas/data[@key = 'key1']/value" />
<option>d</option>
没有被添加。
我无法使用您的代码重现此问题: http://xsltransform.net/94rmq5E
你可以让这更简单:
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="data[@key='key1']/options">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<option>d</option>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>