Xml 基于条件应用XSLT模板

Xml 基于条件应用XSLT模板,xml,xslt,Xml,Xslt,我想在xslt上使用以下模板: <xsl:template match="data/test/row> <!-- This 'match' is from database --> <label class="checkbox-inline"> <input type="checkbox" id="someid" name="somename" value="{CATEGORY_ID}" /><xsl:value-of

我想在xslt上使用以下模板:

<xsl:template match="data/test/row> <!-- This 'match' is from database -->
   <label class="checkbox-inline"> 
       <input type="checkbox" id="someid" name="somename" value="{CATEGORY_ID}" /><xsl:value-of select="CATEGORY_NAME}"  />
    </label>
</xsl:template>

  <xsl:template match="data/test/row> <!-- This 'match' is from database same as above -->
   <label class="checkbox-inline"> 
       <input type="checkbox" id="someid" name="somename" value="{CATEGORY_ID}" disabled="true" /><xsl:value-of select="CATEGORY_NAME}" />
    </label>
</xsl:template>  

您必须在某处获取角色信息。如果它是源XML中的某些数据,则可以通过XPath提取它。因为它是一个运行时信息(当前用户的角色),所以可以通过参数获取。我假设您以某种方式拥有该角色,并将其归因于一个参数或变量

要测试它,您需要为
$role name
变量添加一个初始值属性
select=“
Normal User”“”

enabled
disabled
是我为模式选择的任意名称。现在必须相应地标记模板。现在,它们不仅匹配XPath表达式,还匹配
模式
名称:

<xsl:template match="data/test/row" mode="enabled"> <!-- This 'match' is from database -->
    <label class="checkbox-inline"> 
        <input type="checkbox" id="someid" name="somename" value="{CATEGORY_ID}" />
        <xsl:value-of select="CATEGORY_NAME"  />
    </label>
</xsl:template>

<xsl:template match="data/test/row" mode="disabled"> <!-- This 'match' is from database same as above -->
    <label class="checkbox-inline"> 
        <input type="checkbox" id="someid" name="somename" value="{CATEGORY_ID}" disabled="true" />
        <xsl:value-of select="CATEGORY_NAME" />
    </label>
</xsl:template> 

如果它在源文档中的某个地方,您只需找到它并发现如何通过XPath获取数据。

这些信息来自哪里?你的源文件?它是一个安全角色吗?是的,可以说它是一个安全角色。它在您的源文档中可用吗?@helderdarocha,当然,一定要假设所有数据都已启动并可用。我只需要找出具体的方法来表达这个观点。:)如果它不是源文档中可用的信息,则可以通过运行XSLT transformer的程序通过参数发送它。然后在XSLT内部,您可以通过存储在全局
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:param name="role-name"/>
...

</xsl:stylesheet>
<xsl:template match="/">
    <xsl:choose>
        <xsl:when test="$role-name = 'Normal User'">
            <xsl:apply-templates mode="disabled"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:apply-templates mode="enabled"/>
        </xsl:otherwise>
    </xsl:choose> 
</xsl:template>
<xsl:template match="data/test/row" mode="enabled"> <!-- This 'match' is from database -->
    <label class="checkbox-inline"> 
        <input type="checkbox" id="someid" name="somename" value="{CATEGORY_ID}" />
        <xsl:value-of select="CATEGORY_NAME"  />
    </label>
</xsl:template>

<xsl:template match="data/test/row" mode="disabled"> <!-- This 'match' is from database same as above -->
    <label class="checkbox-inline"> 
        <input type="checkbox" id="someid" name="somename" value="{CATEGORY_ID}" disabled="true" />
        <xsl:value-of select="CATEGORY_NAME" />
    </label>
</xsl:template> 
<xsl:param name="role-name" select="document('runtime-info.xml')/user/role"/>