繁体   English   中英

在XML / XSLT中转义美元符号

[英]Escaping dollar sign in XML/XSLT

我正在处理使用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>

我试图用\\和$来使美元逃脱,但两者都没有运气。

有人可以帮我弄这个吗? 谢谢

不幸的是,您将无法像使用XSLT那样进行解析,因为XML规范禁止在元素名称中使用$符号(以及许多其他符号)。 根据XML规范

名称中排除了ASCII符号和标点符号以及相当大的一组Unicode符号字符,因为它们在XML名称在XML文档之外使用的上下文中作为定界符更有用

我会说您可以选择以下两种方法之一:

  1. 修改源系统(如果可能)以生成兼容的XML
  2. 通过某种方式运行XML以预处理XML以使其符合标准,例如用_替换$符号(允许)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM