如何在XSLT中选择'和'语句?

时间:2011-02-25 18:58:07

标签: xslt conditional

使用AND运算符的复合select语句的示例是什么,类似于if语句,其中条件1 = true且条件2 = true?

3 个答案:

答案 0 :(得分:3)

以下是最简单的示例之一

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match=
    "num[. mod 2  = 0 and . mod 3 = 0]">
  <xsl:copy-of select="."/>
 </xsl:template>

 <xsl:template match="text()"/>
</xsl:stylesheet>

在此XML文档上应用此转换时:

<nums>
  <num>01</num>
  <num>02</num>
  <num>03</num>
  <num>04</num>
  <num>05</num>
  <num>06</num>
  <num>07</num>
  <num>08</num>
  <num>09</num>
  <num>10</num>
</nums>

产生了想要的正确结果:

<num>06</num>

答案 1 :(得分:2)

以下是如何使用复合选择语句的示例....

<?xml version="1.0" encoding="ISO-8859-1"?>
<A>
    <B>
        <C>1</C>
        <D>2</D>
    </B>
    <B>
        <C>1</C>
        <D>3</D>
     </B>
    <E>test</E>
</A>

并且您当前的模板匹配为“E”,然后尝试以下代码仅选择B,其中C = 1且D = 3:对于C和D读取条件1 =真且条件2 =真< /强>

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" indent="yes"/>
    <xsl:template match="E">
        <xsl:value-of select="../B[C = 1][D = 3]"></xsl:value-of>
    </xsl:template>
    <xsl:template match="C"/>
    <xsl:template match="D"/>
</xsl:stylesheet>

祝你好运

答案 2 :(得分:1)

使用AND运算符:

<xsl:if test="a and b">