大家好, 我试图在与条件中的值进行比较时为XML中的标记设置固定值。比如
<xsl:when test="(//TestInput='XYZA') OR (//TestInput='XYZB') OR (//TestInput='XYZC') OR (//TestInput='XYZD')">abcd</xsl:when>
当我尝试使用标记为<TestInput>
的XML运行转换时,它会给我一个错误
Extra illegal tokens: '(', '/', '/', 'TestInput', '=', ''XYZA'', ')', 'OR', '(', '/', '/', 'TestInput', '=', ''XYZB'', ')', 'OR', '(', '/', '/', 'TestInput', '=', ''XYZC'', ')', 'OR', '(', '/', '/', 'TestInput', '=', ''XYZD'', ')'
请使用where子句中的OR运算符帮助我根据条件设置此标记的值。
先谢谢
答案 0 :(得分:10)
案例与XML / XSLT / XPath有关,因此请使用or
代替OR
。
答案 1 :(得分:2)
我使用以下XML创建了一个测试:
<?xml version="1.0" encoding="utf-8"?>
<Test>
<Item>DAC</Item>
<Item>DAD</Item>
<Item>DAE</Item>
</Test>
以下XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<test>
<xsl:choose>
<xsl:when test="//Item[text()='DAC'] or //Item[text()='DAE']">
<output>Here is the text!</output>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</test>
</xsl:template>
</xsl:stylesheet>
我得到以下输出:
<?xml version="1.0" encoding="utf-8"?>
<test>
<output>Here is the text!</output>
</test>
使用Micorosft.Net的XmlDocument类进行测试。关键区别在于或'语句的 case 。
答案 2 :(得分:0)
问题在于// TestInput选择一组元素而不是一个元素。
您应该使用xsl:for-each
<xsl:for-each select="//TestInput[.='a'or'b'or'c']">abc</xsl:for-each>