2015-12-03 52 views
0

我對XML和XSL非常陌生,遇到了麻煩。我搜索了互聯網,並嘗試了幾乎所有我看到的東西,但卻無法實現它的功能。我需要的是輸出所有地址是送貨地址的人員的姓名。XSL我需要運行一個循環,如果某個變量等於一個特定的值?

這裏是XML:

<?xml version="1.0"?> 
<PurchaseOrders> 
    <PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20"> 
    <Address Type="Shipping"> 
     <Name>Ellen Adams</Name> 
     <Street>123 Maple Street</Street> 
    </Address> 
    <Address Type="Billing"> 
     <Name>Tai Yee</Name> 
     <Street>8 Oak Avenue</Street> 
    </Address> 
    </PurchaseOrder> 

    <PurchaseOrder PurchaseOrderNumber="99505" OrderDate="1999-10-22"> 
    <Address Type="Shipping"> 
     <Name>Cristian Osorio</Name> 
     <Street>456 Main Street</Street> 
    </Address> 
    <Address Type="Billing"> 
     <Name>Cristian Osorio</Name> 
     <Street>456 Main Street</Street> 
    </Address> 
    </PurchaseOrder> 

,這裏是我的XML迄今爲止 - 記住,我不知道我在做什麼! :):

<?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>Customer Info</title>  
     </head> 
     <body> 
     <table border="1"> 
      <thead> 
      <tr bgcolor="yellow"> 
      <th>Customer</th>   
      </tr> 
      </thead> 
      <tbody> 
      <xsl:apply-templates />   
      </tbody> 
     </table> 
     </body> 
    </html> 
    </xsl:template> 

<xsl:template match="PurchaseOrder"> 
     <tr> 
      <xsl:for-each select="Address"> 
       <xsl:value-of select=" .[@Type="Shipping"> 
       <td> 
      <xsl:value-of select="Name" /> 
     </td> 
     </xsl:if> 
     </xsl:for-each> 
     </tr> 
    </xsl:template> 
</xsl:stylesheet> 

我已經嘗試了一切從包括if語句改變周圍的代碼,但似乎沒有任何工作。

感謝您的幫助!

+1

在問答中一個好的開始,通過在給定測試輸入的情況下編輯預期的輸出,使它變得更好。祝你好運。 – shellter

回答

0

試試這個方法嗎?

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/PurchaseOrders"> 
    <html> 
     <head> 
      <title>Customer Info</title>  
     </head> 
     <body> 
      <table border="1"> 
      <thead> 
       <tr bgcolor="yellow"> 
        <th>Customer</th>   
       </tr> 
      </thead> 
      <tbody> 
       <xsl:apply-templates select="PurchaseOrder/Address[@Type='Shipping']"/>   
      </tbody> 
     </table> 
    </body> 
    </html> 
</xsl:template> 

<xsl:template match="Address"> 
    <tr> 
     <td> 
      <xsl:value-of select="Name" /> 
     </td> 
    </tr> 
</xsl:template> 

</xsl:stylesheet> 

注過濾與xsl:apply-templates進行;這消除了以後對條件的需要。

+0

這也讓它變得如此簡單。我知道這很容易,我只是俯視。謝謝!! – Jthunter24

相關問題