2011-04-27 49 views
0

我有我的XSLT和XML結合在某種情況下一個問題,我堅持不生成HTML,下面是我的問題的例子:XSLT和XML幫助 - 有兩種不同的XML元素

XML:

<a> 
<x> 
    <y testname="test1"> 
     <object elementname="Name" elementvalue="true" elementvalue1="ABC" elementvalue2="ADF"> 
     <comparisonresult>false</comparisonresult> 
     </object> 
    </y> 

</x> 
</a> 

XSLT:

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <html> 
     <body> 
     <font face="Arial"> 
     <h2>HEADINGY</h2> 
     <h4>Process 1</h4> 
     <h4>More Process</h4> 
      <h4>Additional </h4> 
       <table border="1"> 
       <tr bgcolor="#dccdc"> 
       <th align="center">T1</th> 
       <th align="center">T2</th> 
       <th align="center">T3</th> 
       </tr> 
       </table> 
      <h2>Main</h2> 
      <xsl:for-each select="a/x/y"> 
      <h3> 
       <xsl:value-of select="@testname" /> 
      </h3> 
      <h4>Heading 1</h4> 
      <table border="1" style="display:inline"> 
       <tr bgcolor="#CECEF6"> 
       <th align="center">Item1</th> 
       <th align="center">Item2</th> 
       <th align="center">Item3</th> 
       </tr> 
       <xsl:for-each select="object"> 
       <tr> 
        <td bgcolor="#F2F5A9"> 
        <xsl:value-of select="@elementname" /> 
        </td> 
        <td bgcolor="#F2F5A9"> 
        <xsl:value-of select="@elementvalue1" /> 
        </td> 
        <td bgcolor="#F2F5A9"> 
        <xsl:value-of select="@elementvalue2" /> 
        </td> 

       </tr> 
       </xsl:for-each> 
      </table> 
      </xsl:for-each> 
     </font> 
     </body> 
    </html> 
    </xsl:template> 
</xsl:stylesheet> 

如果您輸入這兩個進http://www.w3schools.com/xml/tryxslt.asp?xmlfile=simple&xsltfile=simple所得到的輸出如預期。問題是當我添加了下面的XML,所以它看起來像:

<a> 
<x> 
    <y testname="test1"> 
     <object elementname="Name" elementvalue="true" elementvalue1="ABC" elementvalue2="ADF"> 
     <comparisonresult>false</comparisonresult> 
     </comparisonobject> 
</y> 
<x> 

<t testname="ComparisonResult"> 
    <step stepname="Add x" stepresult="Add x"> 
     <result>true</result> 
    </step> 
</t> 



</a> 

和相應的XSLT:

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <html> 
     <body> 
     <font face="Arial"> 
     <h2>HEADINGY</h2> 
     <h4>Process 1</h4> 
     <h4>More Process</h4> 
      <xsl:for-each select="a/x/t"> 
      <xsl:for-each select="testname"> 
      <h4>Additional </h4> 
       <table border="1"> 
       <tr bgcolor="#dccdc"> 
       <th align="center">T1</th> 
       <th align="center">T2</th> 
       <th align="center">T3</th> 
       </tr> 

<xsl:for-each select="stepname"> 
       <tr> 
        <td bgcolor="#F2F5A9"> 
        <xsl:value-of select="@stepname" /> 
        </td> 
        <td bgcolor="#F2F5A9"> 
        <xsl:value-of select="@step result" /> 
        </td> 
        <td bgcolor="#F2F5A9"> 
        <xsl:value-of select="@result" /> 
        </td> 
       </table> 
      <h2>Main</h2> 
      <xsl:for-each select="a/x/y"> 
      <h3> 
       <xsl:value-of select="@testname" /> 
      </h3> 
      <h4>Heading 1</h4> 
      <table border="1" style="display:inline"> 
       <tr bgcolor="#CECEF6"> 
       <th align="center">Item1</th> 
       <th align="center">Item2</th> 
       <th align="center">Item3</th> 
       </tr> 
       <xsl:for-each select="object"> 
       <tr> 
        <td bgcolor="#F2F5A9"> 
        <xsl:value-of select="@elementname" /> 
        </td> 
        <td bgcolor="#F2F5A9"> 
        <xsl:value-of select="@elementvalue1" /> 
        </td> 
        <td bgcolor="#F2F5A9"> 
        <xsl:value-of select="@elementvalue2" /> 
        </td> 

       </tr> 
       </xsl:for-each> 
      </table> 
      </xsl:for-each> 
     </font> 
     </body> 
    </html> 
    </xsl:template> 
</xsl:stylesheet> 

我只是得到一個空白頁。 我知道這裏有很多需要消化的東西,但我真的陷入了困境!

感謝

+0

您的樣式表格格式不正確 – 2011-04-27 18:12:39

+0

您的xml格式不正確。讓你的x和y標籤匹配起來。 – 2011-04-27 18:33:36

+0

我可以看到XML中的錯誤,但我不確定XSLT會在哪裏出錯。 – KP65 2011-04-28 09:07:23

回答

0

<xsl:for-each select="a/x/t">不符合您的文檔結構 - 它應該是<xsl:for-each select="a/t"> ...但是你的嵌套for-each承擔更多的問題。

您試圖實現的目標最好使用模板完成。我稍後會添加一個示例。