如何通过xsl访问xml内容

时间:2017-11-04 18:16:11

标签: html xml xslt

您好我正在尝试通过xsl存档转换xml存档,我想要的是创建一个显示xml内容的表,但我无法显示两列名为“复杂性”的值和“subjet”,我的xml代码是这样的:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="../xsl/showQue``stions.xsl"?>
<assessmentItems>
<assessmentItem complexity="3" subject="mikologia">
    <itemBody> 
        <p>Zein Amanita da jangarria?</p>
    </itemBody>
    <correctResponse>
        <value>Caesarea</value>
    </correctResponse>
    <incorrectResponses>
        <value>Phalloides</value>
        <value>Muscaria</value>
        <value>Virosa</value>
    </incorrectResponses>
</assessmentItem>
<assessmentItem complexity="3" subject="mikologia">
    <itemBody> 
        <p>Tripakiek zer dute kapela azpian?</p>
    </itemBody>
    <correctResponse>
        <value>Eztenak</value>
    </correctResponse>
    <incorrectResponses>
        <value>Filamenduak</value>
        <value>Himenioa</value>
        <value>Hodiak</value>
    </incorrectResponses>
</assessmentItem>
<assessmentItem complexity="5" subject="mikologia">
    <itemBody>
        <p>Eranztuna du</p>
    </itemBody>
    <correctResponse>
        <value>Galanpernak</value>
    </correctResponse>
    <incorrectResponses>
        <value>Gibel urdinak</value>
        <value>Esnegorriak</value>
        <value>Errotariak</value>
    </incorrectResponses>
    </assessmentItem>
</assessmentItems>

这是我的xsl:

 <?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <HTML>
        <BODY>
            <h2>Galderak</h2>
            <TABLE border="1">
                <TR>
                    <TH>Testua</TH>
                    <TH>Erantzun zuzena</TH>
                    <TH>Erantzun okerrak</TH>
                    <TH>Zailtasuna</TH>
                    <TH>Arloa</TH>
                </TR>
                <xsl:for-each select="/assessmentItems/assessmentItem" >
                    <TR>
                        <TD><FONT SIZE="2" COLOR="red" FACE="Verdana">
                            <xsl:value-of select="itemBody/p"/> <BR/>
                            </FONT>
                        </TD>
                        <TD><FONT SIZE="2" COLOR="orange" FACE="Verdana">
                            <xsl:value-of select="correctResponse"/> <BR/>
                            </FONT>
                        </TD>
                        <TD>
                            <FONT SIZE="2" COLOR="pink" FACE="Verdana">
                            <xsl:value-of select="incorrectResponses/value[1]"/><BR/>
                            <xsl:value-of select="incorrectResponses/value[2]"/> <BR/>
                            <xsl:value-of select="incorrectResponses/value[3]"/> <BR/>
                            </FONT>
                        </TD>
                        <TD><FONT SIZE="2" COLOR="green" FACE="Verdana">
                            <xsl:value-of select="complexity"/> <BR/>
                            </FONT>
                        </TD>
                            <TD><FONT SIZE="2" COLOR="blue" FACE="Verdana">
                            <xsl:atribute select="subject"/> <BR/>
                            </FONT>
                        </TD>
                    </TR>
                </xsl:for-each>
            </TABLE>
        </BODY>
    </HTML></xsl:template>
    </xsl:stylesheet>

在表格中显示除了这两个列之外的所有内容。谢谢

1 个答案:

答案 0 :(得分:0)

在您的示例中,复杂性和主题是XML属性,您需要一些不同的XPath语法来引用,例如:

<xsl:value-of select="path/to/element/@attribute1" />

注意'@' - 符号。

因此,您的特定列需要定义为:

<TD>
    <FONT SIZE="2" COLOR="green" FACE="Verdana">
        <xsl:value-of select="@complexity"/>
        <BR/>
    </FONT>
</TD>
<TD>
    <FONT SIZE="2" COLOR="blue" FACE="Verdana">
        <xsl:value-of select="@subject"/>
        <BR/>
    </FONT>
</TD>