如何让Saxon将CDATA字符串转换为XdmNode而不转义< &安培; > ?
这是我的ToXdmNode'功能:
Processor processor = xxx.GetProcessor();
var builder = processor.NewDocumentBuilder();
builder.BaseUri = xxx.BaseUri;
var tr = new StringReader("<stuff><![CDATA[<blah>]]></stuff>");
var node = builder.Build(tr);
此代码转换
<stuff><![CDATA[<blah>]]></stuff>
进入一个看起来像的XdmNode:
<stuff><blah></stuff>
当我将OuterXml发送到下一步时,这会导致问题。
如何让我的XdmNode不被转义?
答案 0 :(得分:1)
你说代码转换
<stuff><![CDATA[<blah>]]></stuff>
进入一个看起来像的XdmNode:
<stuff><blah></stuff>
但实际上这不是转换:这两件事只是同一内容的不同序列化。
如果要创建非格式良好的字符串
<stuff><blah></stuff>
然后使用XSLT很棘手,因为不是XML,这不是任何有效XDM节点的序列化。但是,您可以在disable-output-escaping
的帮助下设计它。例如转型
<xsl:template match="stuff">
<xsl:copy>
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:copy>
</xsl:template>
将生成此输出,前提是您将转换输出发送到Serializer(而不是,例如,发送到XdmNode)。