我无法从字符串创建 XSL 节点集。我可以从结果树片段创建一个节点集。此样式表显示了这两种尝试。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:variable name="rtf">
<root>
<child>
</child>
</root>
</xsl:variable>
<xsl:variable name="rtfNs" select="exsl:node-set($rtf)" />
<xsl:variable name="str" select="'<root><child></child></root>'" />
<xsl:variable name="strNs" select="exsl:node-set($str)" />
<xsl:template match="/">
<xsl:copy-of select="$rtfNs" />
<xsl:copy-of select="$rtfNs/root/child" />
<xsl:copy-of select="$strNs" />
</xsl:template>
</xsl:stylesheet>
生产
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:exsl="http://exslt.org/common">
<child/>
</root>
<child xmlns:exsl="http://exslt.org/common"/><root><child></child></root>
代码显示可以从 RTF 创建节点集并在选择属性中使用。尝试从字符串创建节点集会导致字符串具有嵌入的实体(即 < 和 >)。不使用实体就无法定义字符串。这个问题是尝试将外部字符串从 .NET System.Xml.Xsl 传递到样式表并将该字符串转换为节点集的简化。