相关疑难解决方法(0)

在XSLT中,如何测试变量是否存在?

使用XSLT时,如何测试是否存在本地范围的变量,或者这是否可能?

xml xslt

10
推荐指数
2
解决办法
4万
查看次数

XSl:Variable - 检查值是否存在的条件

使用XSLT 1.0,如何检查变量中的值是否存在?

我最初从我的XML数据中为变量赋值,然后需要检查它是否退出:

<xsl:variable name="DOC_TYPE">
  <xsl:value-of select="name(./RootTag/*[1])"/>
</xsl:variable>
<xsl:if test="string($DOC_TYPE) = ''">
  <xsl:variable name="DOC_TYPE">
    <xsl:value-of select="name(./*[1])"/>
  </xsl:variable>
</xsl:if>  
Run Code Online (Sandbox Code Playgroud)

以上不符合预期.我需要的是,如果<RootTag>我的数据中存在,那么变量应该包含下面的子节点<RootTag>.如果<RootTag>不存在则DOC_TYPE应该是我的XML数据中的第一个Tag.

感谢您的答复.

xslt

3
推荐指数
1
解决办法
1万
查看次数

实际上是XSLT Lookup(在循环期间存储变量并在其中使用另一个模板)

这个问题实际上有些不同.请参阅@ Tomalak的回答以了解OP真正想要的内容.:(

有没有办法在一个数组中的for-each循环期间存储变量/ param,并在另一个模板中使用它,即<xsl:template match="Foundation.Core.Classifier.feature">.classname应存储for-each期间出现的所有值.你会如何在XSLT中实现它?这是我目前的代码.

<xsl:for-each select="Foundation.Core.Class">       
 <xsl:for-each select="Foundation.Core.ModelElement.name">
  <xsl:param name="classname">
   <xsl:value-of select="Foundation.Core.ModelElement.name"/>
  </xsl:param>
 </xsl:for-each>
 <xsl:apply-templates select="Foundation.Core.Classifier.feature" /> 
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

这是classname应该使用参数的模板.

<xsl:template match="Foundation.Core.Classifier.feature">
 <xsl:for-each select="Foundation.Core.Attribute">
  <owl:DatatypeProperty rdf:ID="{Foundation.Core.ModelElement.name}">
   <rdfs:domain rdf:resource="$classname" />
  </owl:DatatypeProperty>
 </xsl:for-each>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

输入文件可以在http://krisvandenbergh.be/uml_pricing.xml找到

xslt

0
推荐指数
1
解决办法
4796
查看次数

标签 统计

xslt ×3

xml ×1