XSLT:为每个循环使用模板标记变量和中断条件
我使用的XSLT创建了XSLT:为每个循环使用模板标记变量和中断条件,xslt,Xslt,我使用的XSLT创建了标记,该标记使用语句进行验证,并将或的值设置为true或false 如果条件为真,是否有任何方法可以为每个条件打断语句 我们可以使用主调用例程中模板变量或参数的值吗 例如: <!-- Main Xslt --> <xsl:template> <xsl:call-template name ="TestTemplate"> <!-- Here I want to use the variable or pa
标记,该标记使用
语句进行验证,并将
或
的值设置为true或false
<!-- Main Xslt -->
<xsl:template>
<xsl:call-template name ="TestTemplate">
<!--
Here I want to use the variable or param that
is defined in TestTemplate, is it possible?
-->
</xsl:call-template>
</xsl:template>
<xsl:template name ="TestTemplate">
<xsl:param name="eee"/>
<xsl:for-each select ="//RootNode/LeafNode">
<xsl:choose>
<xsl:when test ="@Type='ABC'">
<xsl:value-of select ="true"/>
</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
假的
广告1。我认为这是不可能的,但我不确定
公元2年。是的,您可以使用参数,但请注意它,因为它是常量。XSL中的所有变量和参数都是常量。看
引用:
一旦设置了变量的值,就不能更改或修改该值
参数也是如此
您可以使用(常量)参数调用模板:
<call-template name="myTemplate">
<xsl:with-param name="name" select="expression">
</call-template>
看看这真是一个很好的参考页。ad1。我认为这是不可能的,但我不确定 公元2年。是的,您可以使用参数,但请注意它,因为它是常量。XSL中的所有变量和参数都是常量。看 引用: 一旦设置了变量的值,就不能更改或修改该值 参数也是如此 您可以使用(常量)参数调用模板:
<call-template name="myTemplate">
<xsl:with-param name="name" select="expression">
</call-template>
请看这是一个非常好的参考页面。对于您的问题:
如果条件为真,是否有任何方法可以为每个条件打断语句
不,通常这也是不必要的。XSLT不是一种命令式编程语言,命令式方法在这里也不能很好地工作
您似乎想要做的是表达“查找第一个
,其中@Type='ABC'
,并根据是否存在返回true或false”
在传统语言中执行此操作的方法与您的方法类似:对于每个节点,检查条件,如果条件满足,则返回
在XSLT中,只需使用XPath选择节点:
//RootNode/LeafNode[@Type='ABC']
结果可能包含一个节点,也可能不包含。根本不需要为每个节点指定一个节点
我们可以使用主调用例程中模板变量或参数的值吗
不。变量和参数是严格限定范围的。一旦处理离开其父元素,它们就超出范围。它们也是常量,一旦声明它们就不能更改
实现此目的的方法是使模板输出所需的值,并将其捕获到变量中:
<xsl:template>
<xsl:variable name="returnValue">
<xsl:call-template name="TestTemplate" />
</xsl:variable>
</xsl:template>
<xsl:template name="TestTemplate">
<!-- the following expression emits true or false -->
<xsl:value-of select="
count(//RootNode/LeafNode[@Type='ABC']) gt; 0
" />
</xsl:template>
关于你的问题:
如果条件为真,是否有任何方法可以为每个条件打断语句
不,通常这也是不必要的。XSLT不是一种命令式编程语言,命令式方法在这里也不能很好地工作
您似乎想要做的是表达“查找第一个
,其中@Type='ABC'
,并根据是否存在返回true或false”
在传统语言中执行此操作的方法与您的方法类似:对于每个节点,检查条件,如果条件满足,则返回
在XSLT中,只需使用XPath选择节点:
//RootNode/LeafNode[@Type='ABC']
此操作的结果包含或不包含节点。根本不需要为每一个都设置一个
我们可以使用主调用例程中模板变量或参数的值吗
不可以。变量和参数的作用域是严格限定的。一旦处理离开父元素,它们就超出范围。它们也是常量,一旦声明它们就不能更改
实现此目的的方法是使模板输出所需的值,并将其捕获到变量中:
<xsl:template>
<xsl:variable name="returnValue">
<xsl:call-template name="TestTemplate" />
</xsl:variable>
</xsl:template>
<xsl:template name="TestTemplate">
<!-- the following expression emits true or false -->
<xsl:value-of select="
count(//RootNode/LeafNode[@Type='ABC']) gt; 0
" />
</xsl:template>