2011-08-11 17 views
1

から行項目に値を取得する方法:私はこのXMLを持つヘッダ

<Documents> 
    <Header Document_No="Numb1" Warehouse="WH2"> 
     <Body Position="1" Quantity="11" /> 
     <Body Position="2" Quantity="10" /> 
    </Header> 
    <Header Document_No="Numb2" Warehouse="WH1"> 
     <Body Position="1" Quantity="20"/> 
     <Body Position="2" Quantity="13"/> 
     <Body Position="3" Quantity="12"/> 
    </Header> 
</Documents> 

マイXSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <xsl:output encoding="utf-8" indent="yes" method="xml"/> 
    <xsl:template match="/"> 
     <GroupDocuments> 
      <xsl:apply-templates/> 
     </GroupDocuments> 
    </xsl:template> 
    <xsl:template match="Header"> 
     <Message> 
      <Document> 
       <Document-Header> 
        <DocNumber> 
         <xsl:value-of select="@Document_No"/> 
        </DocNumber> 
       </Document-Header> 
       <Lines> 
        <xsl:apply-templates select="Body"/> 
       </Lines> 
      </Document> 
     </Message> 
    </xsl:template> 
    <xsl:template match="Body"> 
     <Line> 
      <Line-Item> 
       <LineNumber> 
        <xsl:value-of select="@Position"/> 
       </LineNumber> 
       <Quantity> 
        <xsl:value-of select="@Quantity"/> 
       </Quantity> 
      </Line-Item> 
      <Line-Warehouse> 
       <Warehouse> 
        <--Where is a problem-->> 
        <xsl:value-of select=""/> 
       </Warehouse> 
      </Line-Warehouse> 
     </Line> 
    </xsl:template> 

</xsl:stylesheet> 

私は、どのようにライン倉庫タグで倉庫の値を得るためにこだわっています私は身体をproceesingときにヘッダーから倉庫の価値を取るために?それを解決するのを助けてください。

結果は次のようになります言及テンプレートに

<?xml version="1.0" encoding="utf-8"?> 
<GroupDocuments xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <Message> 
     <Document> 
      <Document-Header> 
       <DocNumber>Numb1</DocNumber> 
      </Document-Header> 
      <Lines> 
       .............................................. 
       ............................................ 
       <Line> 
        <Line-Item> 
         <LineNumber>2</LineNumber> 
         <Quantity>10</Quantity> 
        </Line-Item> 
        <Line-Warehouse> 
         <Warehouse>WH2</Warehouse> 
        </Line-Warehouse> 
       </Line> 
      </Lines> 
     </Document> 
    </Message> 
    <Message> 
     <Document> 
      <Document-Header> 
       <DocNumber>Numb2</DocNumber> 
      </Document-Header> 
      <Lines> 
       <Line> 
        <Line-Item> 
         <LineNumber>1</LineNumber> 
         <Quantity>20</Quantity> 
        </Line-Item> 
        <Line-Warehouse> 
         <Warehouse>WH1</Warehouse> 
        </Line-Warehouse> 
       </Line> 
..................................... 
..................................... 
      </Lines> 
     </Document> 
    </Message> 
</GroupDocuments> 

答えて

1

現在のノードがbodyノードです。親の属性を選択する必要があります。

この単純なXPathの使用:それは働いて答えを

"../@Warehouse" 
+1

感謝を:) – Petras

関連する問題