2015-12-11 81 views
0

當我轉換時沒有獲得所需的輸出時,我的xslt文件存在大問題。 它應該工作,但我不知道我犯了什麼大錯。我在嘗試獲取每個/pizzaservice/pizzen/pizza/topping元素(這很容易),但是也從每個元素獲取(如果可用)信息info(子元素)與每個頂部元素相關聯(現在這是問題)。通過特定元素的標記獲取特定子元素的XSLT大問題

所以在此之前,我想測試是否 /pizzaservice/basicToppings/topping/@name=/pizzaservice/pizzen/pizza/toppin,我不知道我做得很好:|,也許還有其他的可能性要做到這一點,請你能不能幫我...

`

<?xml version="1.0" encoding="UTF-8"?> 
    <pizzaservice title="Pizza-Service"> 
     <basicToppings> 
      <topping name="Timos Tomatensauce" id="Tomatensauce_Timos"> 
       <image url="https://upload.wikimedia.org/wikipedia/commons/4/41/Pizza_Margherita%2C_at_Restaurant_Gusto_%282013.07.13%29_2.jpg" copyRightShort="commons.wikimedia.org" copyRightLong="Arbeit von Lombroso aus Restaurant Gustro"> 
       </image> 
       <info>aus ökologischem Anbau</info> 
       <info>ohne Konservierungsmitteln</info> 
       <info>laktosefrei</info> 
      </topping> 
      <topping name="Agro Tomatensauce" id="Tomatensauce_Agro"> 
       <image url="https://upload.wikimedia.org/wikipedia/commons/4/41/Pizza_Margherita%2C_at_Restaurant_Gusto_%282013.07.13%29_2.jpg" copyRightShort="commons.wikimedia.org" copyRightLong="Arbeit von Lombroso aus Restaurant Gustro"> 
       </image> 
       <info>aus ökologischem Anbau</info> 
       <info>mit Konservierungsmitteln</info> 
       <info>laktosefrei</info> 
      </topping> 
      <topping name="Myrto Tomatensauce" id="Tomatensauce_Myrto"> 
       <image url="https://upload.wikimedia.org/wikipedia/commons/4/41/Pizza_Margherita%2C_at_Restaurant_Gusto_%282013.07.13%29_2.jpg" copyRightShort="commons.wikimedia.org" copyRightLong="Arbeit von Lombroso aus Restaurant Gustro"> 
       </image> 
       <info>aus ökologischem Anbau</info> 
       <info>mit Konservierungsmitteln</info> 
       <info>laktosefrei</info> 
      </topping> 
    <!--...--> 
    </basicToppings> 

    <pizzen> 
    <pizza name="Pizza Mozzarella" id="Pizza_Mozarella"> 
       <image url="https://upload.wikimedia.org/wikipedia/commons/4/41/Pizza_Margherita%2C_at_Restaurant_Gusto_%282013.07.13%29_2.jpg" copyRightShort="commons.wikimedia.org" copyRightLong="Arbeit von Lombroso aus Restaurant Gustro"> 
       </image> 
       <topping>Myrto Tomatensauce</topping> 
       <topping>geriebener Gouda Käse</topping> 
       <topping>frisches Basilikum</topping> 
       <size price="3.00" diameter="23cm"> 
        Sehr klein 
       </size> 
       <size price="4.50" diameter="26cm"> 
        klein 
       </size> 
       <size price="6.00" diameter="29cm"> 
        mittelgroß 
       </size> 
       <size price="7.50" diameter="32cm"> 
        groß 
       </size> 
       <size price="9.00" diameter="35cm"> 
        Sehr groß 
       </size> 
      </pizza> 
      <pizza name="Pizza Hawai" id="Pizza_Hawai"> 
       <image url="https://upload.wikimedia.org/wikipedia/commons/4/41/Pizza_Margherita%2C_at_Restaurant_Gusto_%282013.07.13%29_2.jpg" copyRightShort="commons.wikimedia.org" copyRightLong="Arbeit von Lombroso aus Restaurant Gustro"> 
       </image> 
       <topping> 
       Timos Tomatensauce 
      </topping> 
       <topping> 
       frisch geraspeltem Edamer Käse 
      </topping> 
       <topping> 
       Ananas 
      </topping> 
       <topping> 
       Vorderschinken 
      </topping> 
       <size price="3.00" diameter="23cm"> 
        Sehr klein 
       </size> 
       <size price="4.50" diameter="26cm"> 
        klein 
       </size> 
       <size price="6.00" diameter="29cm"> 
        mittelgroß 
       </size> 
       <size price="7.50" diameter="32cm"> 
        groß 
       </size> 
       <size price="9.00" diameter="35cm"> 
        Sehr groß 
       </size> 
      </pizza> 
    </pizzen> 
    </pizzaservice> 
<!--End of the xml code snippet--> 

XSLT:

----------------------------------------------------------------------------- 
<!--Start of the xslt code snippet--> 
<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/> 
    <xsl:template match="/"> 
     <html> 
      <xsl:apply-templates select="/pizzaservice/pizzen"/> 
     </html> 
    </xsl:template> 
    <xsl:template match="pizzen"> 
     <head> 
      <link rel="stylesheet" type="text/css" href="okay.css"/> 
     </head> 
     <body> 
    <xsl:for-each select="pizza"> 
    <xsl:for-each select="topping"><xsl:value-of select="."/><!--allright works!--><br/> 
    <xsl:for-each select="/pizzaservice/basicToppings/topping[@name='.']/info"> 
     <xsl:value-of select="."/><br/><!--all info elements to the current topping here,this part don,t work yet!--><br/> 
    </xsl:for-each> 

<!--End of the xslt code snippet--> 

</body> 
</xsl:template> 
</xsl:stylesheet> 

    ` 
+1

請參考這首: - http://stackoverflow.com/help/how-to-ask – Hemdip

+3

如此(a)發佈你的XSLT(b)向我們展示預期的輸出結果(c)清理你的XML(d)不要重複自己,(e)拿出一個描述問題性質的標題。 –

+0

請爲您的問題選擇一個標題,說明您的問題是什麼,而不是標題說這是一個大問題,您需要幫助。 –

回答

0

你的問題不明確。如果我猜測正確,你想要做的事,如:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" encoding="UTF-8" /> 

<xsl:key name="topping" match="basicToppings/topping" use="@name" /> 

<xsl:template match="/pizzaservice"> 
    <html> 
     <head> 
      <link rel="stylesheet" type="text/css" href="okay.css"/> 
     </head> 
     <body> 
      <xsl:apply-templates select="pizzen/pizza"/> 
     </body> 
    </html> 
</xsl:template> 

<xsl:template match="pizza"> 
    <h3> 
     <xsl:value-of select="@name"/> 
    </h3> 
    <ul> 
     <xsl:apply-templates select="topping"/> 
    </ul> 
</xsl:template> 

<xsl:template match="topping"> 
    <li> 
     <xsl:value-of select="."/> 
    </li> 
    <ul> 
     <xsl:for-each select="key('topping', normalize-space(.))/info"> 
      <li> 
       <xsl:value-of select="."/> 
      </li> 
     </xsl:for-each> 
    </ul> 
</xsl:template> 

</xsl:stylesheet> 

的使用注意事項的關鍵查找摘心的信息。

應用到你的輸入例如,結果將類似於此:

enter image description here

+0

是的邁克爾是吧,那就是它!真的很棒,我還沒有使用關鍵功能。 –