**更新了输出** 我试图将<![CDATA [...]]添加到循环内生成的值节点。 我正在使用XSLT&C#.net。 我尝试了几件事,包括 Add CDATA to an xml file 但到目前为止,似乎都没有任何工作。 我什至尝试从字面上添加它,但是,正如预期的那样,它没有奏效。 谁能帮我这个忙。
这是生成我的节点的方式
<xsl:for-each select="$OLifE/">
<DataPoint>
<Name>Carrier.Requirements<xsl:if test="$NumberOfPayments > 1"><xsl:value-of select="position()"/></xsl:if></Name>
<Value>Here is the response text</Value>
</DataPoint>
我的预期输出是
<DataPoint>
<Name>Carrier.Requirements1</Name>
<Value><![CDATA[Here is the response text]]</Value>
</DataPoint>
<DataPoint>
<Name>Carrier.Requirements2</Name>
<Value><![CDATA[Here is the response text]]</Value>
</DataPoint>
<DataPoint>
<Name>Carrier.Requirements3</Name>
<Value><![CDATA[Here is the response text]]</Value>
</DataPoint>
如果需要进一步的信息,请告诉我。
答案 0 :(得分:0)
这是一个简化的示例:
XML
<input>
<item/>
<item/>
<item/>
</input>
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" cdata-section-elements="Value"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/input">
<output>
<xsl:for-each select="item">
<DataPoint>
<Name>
<xsl:value-of select="concat('Carrier.Requirements', position())"/>
</Name>
<Value>Here is the response text</Value>
</DataPoint>
</xsl:for-each>
</output>
</xsl:template>
</xsl:stylesheet>
结果
<?xml version="1.0" encoding="utf-16"?>
<output>
<DataPoint>
<Name>Carrier.Requirements1</Name>
<Value><![CDATA[Here is the response text]]></Value>
</DataPoint>
<DataPoint>
<Name>Carrier.Requirements2</Name>
<Value><![CDATA[Here is the response text]]></Value>
</DataPoint>
<DataPoint>
<Name>Carrier.Requirements3</Name>
<Value><![CDATA[Here is the response text]]></Value>
</DataPoint>
</output>