如何使用XSLT在XML元素名称中添加特殊字符@
XSLT生成含@字符XML元素的解决方案
XML元素名称里的@符号不符合W3C定义的QName规范,所以直接使用<xsl:element name="@type">会触发"Element name {@type} is not a valid QName"错误。如果必须生成这种非标准元素,可通过以下两种方法实现:
方法1:用<xsl:text>输出原始标记
通过禁用输出转义,直接输出元素的原始标签,绕过XSLT的QName校验:
<xsl:text disable-output-escaping="yes"><@type></xsl:text> <xsl:value-of select="$type" /> <xsl:text disable-output-escaping="yes"></@type></xsl:text>
disable-output-escaping="yes"会让处理器直接输出<和>,而非转义后的实体字符。需注意该属性的支持度取决于具体XSLT处理器(如Xalan、Saxon均支持)。
方法2:XSLT 2.0+处理器的特殊处理(可选)
若使用支持XSLT 2.0及以上的处理器(如Saxon),也可通过xsl:result-document配合文本输出模式构造内容,但方法1的通用性更强。
重要提醒:生成的XML不符合标准规范,多数XML解析器无法正常解析,仅适用于特定强制场景。
内容的提问来源于stack exchange,提问作者technocrat
相关产品推荐
相关产品推荐

