如何在XSL中逃脱加号

时间:2015-10-07 04:48:43

标签: xml xslt escaping cdata

我正在使用XSLT 1.0版从传递给我们系统的XML中获取数据,并将数据放入另一个系统使用的文本文件中。

当我从XML获得某个值时,我想传递数据:5年以上。但是,我在文本文件中获得的所有内容都是5年。我不知道为什么它不通过+号。其他所有价值都有效。

我已经在网上研究了这个并尝试了很多东西,包括使用CDATA的各种组合和使用xsl:text和xsl:value-of的disable-output-escaping,但没有任何效果。

以下是我想要使用的XSLT的简化版本以及用于测试它的XML:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
   <xsl:template name="YRS">
      <xsl:for-each select="/HOME/YRS">
         <xsl:variable name="HomeSub" select="position()"/>
         <yrs-rec reclen="88" rectype="YRS">
            <yrs-rec-typ format="xxx" type="c" precision="0" pos="1" len="3">YRS</yrs-rec-typ>
            <yrs-rec-nbr format="9(3)" type="nu" precision="0" pos="5" len="3">
               <xsl:value-of select="$HomeSub"/>
            </yrs-rec-nbr>
            <yrs-lgth-of-own format="x(50)" type="c" precision="0" pos="39" len="50">
               <xsl:choose>
                  <xsl:when test="len_of_own = 'E'">&lt; 1 month</xsl:when>
                  <xsl:when test="len_of_own = 'A'">&lt; 1 year</xsl:when>
                  <xsl:when test="len_of_own = 'B'">1-2 years</xsl:when>
                  <xsl:when test="len_of_own = 'C'">3-4 years</xsl:when>
                  <xsl:when test="len_of_own = 'D'">5+ years</xsl:when>
                  <xsl:when test="len_of_own = 'X'"/>
                  <xsl:otherwise/>
               </xsl:choose>
            </yrs-lgth-of-own>
         </yrs-rec>
      </xsl:for-each>
   </xsl:template>
</xsl:stylesheet>



<HOME>
    <YRS>
        <len_of_own>A</len_of_own>
    </YRS>
    <YRS>
        <len_of_own>B</len_of_own>
    </YRS>
    <YRS>
        <len_of_own>C</len_of_own>
    </YRS>
    <YRS>
        <len_of_own>D</len_of_own>
    </YRS>
    <YRS>
        <len_of_own>E</len_of_own>
    </YRS>
    <YRS>
        <len_of_own>X</len_of_own>
    </YRS>
</HOME>

我无法编辑XSLT的任何其他部分...只能为yrs-lgth-of-own编辑我的部分。我不知道还有什么可以让它工作,请帮忙!

我是新来的,很抱歉,如果我没有提供足够的信息。让我知道还需要哪些其他信息。谢谢!

1 个答案:

答案 0 :(得分:1)

没有必要以任何方式逃避加号。一个简单的:

<xsl:text>5+ years</xsl:text>

所有应该是必需的。如果您未获得预期结果,则处理链中的其他地方一定存在问题。