Xml 基于条件应用XSLT模板
我想在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
<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"/>