我正在使用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'">< 1 month</xsl:when>
<xsl:when test="len_of_own = 'A'">< 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编辑我的部分。我不知道还有什么可以让它工作,请帮忙!
我是新来的,很抱歉,如果我没有提供足够的信息。让我知道还需要哪些其他信息。谢谢!
答案 0 :(得分:1)
没有必要以任何方式逃避加号。一个简单的:
<xsl:text>5+ years</xsl:text>
是所有应该是必需的。如果您未获得预期结果,则处理链中的其他地方一定存在问题。