空白的xslt转换

时间:2015-09-29 04:57:19

标签: xml xslt

我正在转换以下xml但它的空白。

我希望将测试用例添加到正文并使其成为h1。我很困惑。

<?xml version="1.0" encoding="UTF-8"?>
<testsuite errors="1" failures="0" name="TestDemo-20150928232552" tests="1" time="11.405">
    <properties/>
    <system-out>
<![CDATA[]]>    </system-out>
    <system-err>
<![CDATA[]]>    </system-err>
    <testcase classname="TestDemo" name="test_contactForm" time="11.405">
        <error message="Message: Unable to find element with xpath '//select[@name='tosh']/option[@value='26 - 50']'
Screenshot: available via screen
" type="NoSuchElementException">
<![CDATA[Traceback (most recent call last):
NoSuchElementException: Message: Unable to find element with xpath '//select[@name='tosh']/option[@value='26 - 50']'    
]]>     </error>
    </testcase>
</testsuite>

请帮助。任何提示或建议都非常感谢。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
        <html>
            <head>
                <title>
                    <xsl:value-of select="testcase"/>
                </title>
            </head>
            <body>
                <xsl:apply-templates select="body"/>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="testcase">
        <h1><xsl:value-of select="."/></h1>
    </xsl:template>
    <xsl:template match="error">
        <p><xsl:apply-templates/></p>
    </xsl:template>
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:2)

这部分:

<title>
    <xsl:value-of select="testcase"/>
</title>

返回一个空的title元素,因为您位于/根节点的上下文中,testcase不是/根节点的子节点。你需要这样做:

<title>
    <xsl:value-of select="testsuite/testcase"/>
</title>

如果您希望title包含testcase的所有文字内容(不知何故,我怀疑您真的想要那样)。

这部分:

<xsl:apply-templates select="body"/>

没有做任何事情,因为XML中的任何地方都没有body元素。应该只是:

<xsl:apply-templates/>

此模板不执行任何操作,因为它永远不会应用:

<xsl:template match="error">
    <p><xsl:apply-templates/></p>
</xsl:template>