XSL 用于每个 xml 上的每个 XML 正在转换 对于每个参数



我有以下 xml

  <root>
      <element id='1'>blah</element>
      <element id='2'>blah</element>
      <element id='3'>blah</element>
  </root>

一个帕姆传入我的xsl,那就是..

  <Ids>
      <id>1</id>
      <id>2</id>
      <id>3</id> 
  </Ids>

在我的 xsl 中,我想遍历 parm 和 xml,以匹配任何具有等于 parm id 值之一的 id 属性的元素。这是动态的,我不会知道它们的值将是 uuid。

我已经试过了,但我找不到元素 id

  <xsl:for-each  select="/$Ids/id">
 <xsl:variable name="driverId" select="."/>
     <xsl:for-each select="/root/element[@id=$driverId]">
          //do something
     </xsl:for-each>
   </xsl:for-each>

如果在第一个元素 id 之前发出消息,我可以看到所有值,但不能在循环中使用。.以我正在考虑的方式,这可能吗?

仍然无法正常工作,我已将
相同的结果。

在 xsl 中,如果我把每个都放在帕姆之外

  <test><xsl:for-each select="/root/element/@id"></test>

我得到

  <test>1 2 3</test>

如果放

  <test><xsl:for-each select="/root/element/@id"></test>

里面

   <xsl:for-each  select="$Ids/id">

我什么也没得到???

定义键

<xsl:key name="id" match="element" use="@id"/>

然后,您还需要使用全局xsl:variable引用主输入文档,即

<xsl:variable name="main-root" select="/"/>

一旦你有了那个用途

<xsl:for-each select="$Ids//id">
  <xsl:for-each select="key('id', ., $main-root)">...</xsl:for-each>
</xsl:for-each>

没有您需要的钥匙

<xsl:for-each select="$Ids//id">
  <xsl:for-each select="$main-root/root/element[@id = current()]">...</xsl:for-each>
</xsl:for-each>
<xsl:for-each  select="/$Ids/id">

显然不正确

/$Ids在语法上不合法 - 变量/参数引用不能立即跟随/运算符。

正确的表达方式是

$Ids/id

而你真正想要的是

/root/element[@id=$Ids/id]

相关内容

  • 没有找到相关文章

最新更新