Jak w węźle podrzędnym pobrać wartość z węzła nadrzędnego w transformacie XSLT

0

Mam takiego XML'a

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="transformata.xsl"?>
<ROOT>
<MAIN>
  <NAZWA>hakunamatata</NAZWA>
</MAIN>
  <ALTERNATIVE_PAYROLLS>
     <PAYROLL>
         <VALUE>123</VALUE>
       <NAME>ABC</NAME>
       </PAYROLL>
         <PAYROLL>
         <VALUE>456</VALUE>
       <NAME>DEF</NAME>
       </PAYROLL>
  </ALTERNATIVE_PAYROLLS>
</ROOT>

Do tego mam transformatę:

<?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>
  <table>
      <xsl:for-each select="ROOT">
        <tr><td><xsl:value-of select="MAIN/NAZWA"/></td></tr>    
      <xsl:for-each select="ALTERNATIVE_PAYROLLS/PAYROLL">
		<xsl:if test="NAME='ABC'">
			<tr><td>HURRA  ='<xsl:value-of select="MAIN/NAZWA"/>';</td></tr>			
		</xsl:if>	
      </xsl:for-each>
	</xsl:for-each>	
  </table>
  </body>
  </html>

I ponieważ "wszedłem" do węzła ALTERNATIVE_PAYROLLS to mam tylko HURRA = ''; bez wartości z węzła nadrzędnego. Ktoś wie jak pobrać wewnątrz pętli wartość z węzła nadrzędnego aby uzyskać? HURRA = 'hakunamatata'; ?

1

Dobra znalazłem ... można zrobić coś takiego:

<xsl:variable name="vMERCHANT_NAME" select="ancestor::ROOT/MAIN/NAZWA"/>
1

Możesz spróbować względnego odwołania do elementów (..)

Sam bym tego nie użył, ale... widziałem takie konstrukty <xsl:variable name="blah" select="$someSet/XXX/YYY[@ZZ='AA'][@YYd='BB']/../../Wooohoo/@Attr"/>

1 użytkowników online, w tym zalogowanych: 0, gości: 1