使用XSL将属性添加到标记

时间:2014-08-14 02:04:24

标签: html xml xslt web xhtml

所以我的代码中有一个xhtml标签,就像这样......

<input type="checkbox" name="test" id="radio3" value="test"/>

但是,我通过我用来格式化html文档的XSL文件提取数据。我打算使用if语句以便它提取的数据,如果它遵循某个标准,则勾选复选框。所以基本上我会添加一个属性,以便生成的html看起来像......

<input type="checkbox" name="test" id="radio1" value="test" checked=""/>

起初我使用了If语句......

<xsl:if variable="//o:TEST = 'Y'">
      <input type="checkbox" name="test" id="radio1" value="test" checked=""/>
</xsl:if>
<xsl:if variable="//o:TEST = 'N'">
      <input type="checkbox" name="test" id="radio1" value="test"/>
</xsl:if>

这很好......但是我发现我的模型文件无法读取数据,我假设它与模型收集数据后XSL如何处理数据有关。

所以我想知道我将如何去,或者是否有人可以引导我如何操纵已经在我的HTML中的实际数据。 (因此,不是在我的XSL文件中生成复选框输入,而是在我的HTML文件中添加复选框输入,然后从HTML文件中输入复选框输入。)

干杯

1 个答案:

答案 0 :(得分:1)

您可以根据条件修改<input>元素,而不是像这样创建新的<input>元素:

<xsl:stylesheet xmlns="" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0"  xmlns:html="http://www.w3.org/1999/xhtml" xpath-default-namespace="http://www.w3.org/1999/xhtml">
    <xsl:output method="html" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>

    <xsl:template match="input">
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:choose>
                <xsl:when test="1=1">                    
                    <xsl:attribute name="checked"></xsl:attribute>
                </xsl:when>
            </xsl:choose>
            <xsl:apply-templates select="*|text()"/>
        </xsl:copy>        
    </xsl:template>

    <xsl:template match="*|text()|@*">
        <xsl:copy>
            <xsl:apply-templates select="*|text()|@*"/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

我已经使用此输入进行了测试:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
        <input type="checkbox" name="test" id="radio3" value="test"/>
    </body>
</html>

它创建了checked=""属性:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
        <input type="checkbox" name="test" id="radio3" value="test" checked=""></input>
    </body>
</html