我正在尝试在XSLT中添加带有值的新字段。我发现以下链接很有用,但我只能添加一个字段和值。我想为它添加多个字段和值。
供参考:XSLT: If tag exists, apply template; if not, choose static value
输入:
<root>
<item>
<country>Brobdingnag</country>
</item>
<item>
<test/>
</item>
</root>
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org 1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="item[not(country)]">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
<country>Lilliput</country>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
输出:
<root>
<item>
<country>Brobdingnag</country>
</item>
<item>
<test></test>
<country>Lilliput</country>
</item>
</root>
同样的方式我需要添加多个字段..任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
如果我正确理解了questin,你只需要一个额外的条件。
输入
var settings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
var reader = System.Xml.XmlTextReader.Create("C:\\Users\\ADMIN\\Pictures\\test.xml", settings);
XSLT
<root>
<item>
<country>Brobdingnag</country>
<state>State of Fiction</state>
</item>
<item>
<test/>
</item>
</root>
输出
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="item[not(country) and not(state)]">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
<country>Lilliput</country>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
它以这种方式工作..
输入:
<root>
<item>
<country>Brobdingnag</country>
</item>
<item>
<test/>
</item>
</root>
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org 1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="item[not(country) and not(State)]">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
<country>Lilliput</country>
<state>State of Fiction</state>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
输出:
<root>
<item>
<country>Brobdingnag</country>
</item>
<item>
<test></test>
<country>Lilliput</country>
<state>State of Fiction</state>
</item>
</root>