我正在处理使用XSLT转换XML(来自遗留系统)的要求。我遇到了处理带有美元符号的标签的问题(这就是它们在遗留系统中的存储和生成方式)。示例XML文件的示例:
<root>
<example>
<problem$tag>12354</problem$tag>
</example>
<thisTagIsOK>sunny day</thisTagIsOK>
</root>
这是我的xslt:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="example">
<xsl:apply-templates select="problem$tag>"/>
print stuff
</xsl:template>
</xsl:stylesheet>
我试图用\和$来逃避美元 两个都没有运气。
有人可以帮我吗? 感谢
答案 0 :(得分:2)
不幸的是,您将无法像使用XSLT那样解析它,因为XML规范禁止在元素名称中使用$
符号(以及许多其他符号)。来自XML specification:
ASCII符号和标点符号,以及相当大的 Unicode符号字符组,从名称中排除,因为 它们在XML名称的上下文中作为分隔符更有用 在XML文档之外使用
我会说你的选择是:
$
符号替换为_
(允许)