xslt 中的动态谓词

dynamic predicate in xslt

通过谓词匹配,根据另一个 parent @refID 选择多个 transportation 组。 示例:

<parent refid="masterbill"/>
<transportation refid="housebill">
</transportation>
<transportation refid="transportUnit">
</transportation>
<transportation refid="masterbill">
</transportation>

我的逻辑是让 GET ALL transporation 通过下面的条件得到满足

IF @refID=="masterbill" 
else IF @refID=="trasportUnit" 
get only <transportation @refid="transportUnit">.

我试过如下操作,但“*”部分出错。

<xsl:if test="@refID=="masterbill">
<xsl:variable name='match' select="'*'"/>
</xsl:if>
<xsl:if test="@refID=="transportUnit">
<xsl:variable name='match' select="'transportUnit'"/>
</xsl:if>
<for-each select="transportation[@refID=$match]">

试试这样的东西:

<xsl:variable name='match'>
  <xsl:if test="@refID=="masterbill">*</xsl:if>
  <xsl:if test="@refID=="transportUnit">transportUnit</xsl:if>
</xsl:variable>

<xsl:for-each select="transportation[$match='*' or @refID=$match]">