要比较XSLT中的两个元素(字符串类型)?
|
我是XSLT的新手,请问有人可以建议我如何比较来自xml的两个元素作为字符串,它们的值分别是:
<OU_NAME>Vision Operations</OU_NAME> --XML code
<OU_ADDR1>90 Fifth Avenue</OU_ADDR1> --XML code
<xsl:choose>
<xsl:when test=\"OU_NAME=\'OU_ADDR1\'\"> --comparing two elements coming from XML
<!--remove if adrees already contain operating unit name
<xsl:value-of select=\"OU_NAME\"/> <fo:block/>-->
<xsl:if test=\"OU_ADDR1 !=\'\' \">
<xsl:value-of select=\"OU_ADDR1\"/>
<fo:block/>
</xsl:if>
<xsl:if test=\"LE_ADDR2 !=\'\' \">
<xsl:value-of select=\"OU_ADDR2\"/>
<fo:block/>
</xsl:if>
<xsl:if test=\"LE_ADDR3 !=\'\' \">
<xsl:value-of select=\"OU_ADDR3\"/>
<fo:block/>
</xsl:if>
<xsl:if test=\"OU_TOWN_CITY !=\'\'\">
<xsl:value-of select=\"OU_TOWN_CITY\"/>,
<fo:leader leader-pattern=\"space\" leader-length=\"2.0pt\"/>
</xsl:if>
<xsl:value-of select=\"OU_REGION2\"/>
<fo:leader leader-pattern=\"space\" leader-length=\"3.0pt\"/>
<xsl:value-of select=\"OU_POSTALCODE\"/>
<fo:block/>
<xsl:value-of select=\"OU_COUNTRY\"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select=\"OU_NAME\"/>
<fo:block/>
<xsl:if test=\"OU_ADDR1 !=\'\' \">
<xsl:value-of select=\"OU_ADDR1\"/>
<fo:block/>
</xsl:if>
<xsl:if test=\"LE_ADDR2 !=\'\' \">
<xsl:value-of select=\"OU_ADDR2\"/>
<fo:block/>
</xsl:if>
<xsl:if test=\"LE_ADDR3 !=\'\' \">
<xsl:value-of select=\"OU_ADDR3\"/>
<fo:block/>
</xsl:if>
<xsl:if test=\"OU_TOWN_CITY !=\'\'\">
<xsl:value-of select=\"OU_TOWN_CITY\"/>,
<fo:leader leader-pattern=\"space\" leader-length=\"2.0pt\"/>
</xsl:if>
<xsl:value-of select=\"OU_REGION2\"/>
<fo:leader leader-pattern=\"space\" leader-length=\"3.0pt\"/>
<xsl:value-of select=\"OU_POSTALCODE\"/>
<fo:block/>
<xsl:value-of select=\"OU_COUNTRY\"/>
</xsl:otherwise>
</xsl:choose>
没有找到相关结果
已邀请:
1 个回复
俯乡骚钵皆
等效于此,更短的代码:
现在,对您的问题: 如何比较即将到来的两个要素 从xml作为字符串 在Xpath 1.0中,只能使用运算符
和函数
以及运算符
比较字符串是否相等(或不相等)。
当字符串
等于字符串ѭ9equal时,精确计算得出7ѭ。
当字符串
与字符串
不相等时,精确计算为
。 还有the14ѭ运算符。通常应避免使用它,因为只要它的一个操作数是节点集,它就具有异常行为。 现在,比较两个元素节点的规则相似:
当
的字符串值等于
的字符串值时,恰好将计算结果为7ѭ。
当
的字符串值不等于
的字符串值时,将精确地计算为
。 但是,如果“ 3”的操作数之一是节点集,则
当节点集
中至少有一个节点的字符串值等于字符串
时,精确计算为
当节点集
中至少有一个节点的字符串值等于
中某个节点的字符串值时,精确计算为
因此,表达式:
仅当当前节点的至少一个子元素名为
且其字符串值为字符串'OU_ADDR1 \'时,才将结果计算为
。 这显然不是您想要的! 您最有可能想要:
该表达式的计算结果为
恰好是当前节点的至少一个
子级和当前节点的一个
子级具有相同的字符串值。 最后,在XPath 2.0中,还可以使用值比较运算符
,
,
,
,
和从XPath 1.0通用比较运算符
继承来比较字符串。 当一个或两个自变量的一个或多个自变量序列超过一个项目时,尝试评估值比较运算符将导致错误。