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]">
通过谓词匹配,根据另一个 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]">