开发者

Problems with style sheet not displaying wName

开发者 https://www.devze.com 2023-03-22 08:30 出处:网络
Here is the xml code <?xml-stylesheet type=\"text/xsl\" href=\"autotxt.xsl\" ?> <delivery> <wName>Reston</wName>

Here is the xml code

<?xml-stylesheet type="text/xsl" href="autotxt.xsl" ?>
<delivery>
<wName>Reston</wName>
<wContact>John McAdams</wContact>
<orderDate>8/15/2005</orderDate>
<recvDate>8/21/2005</recvDate>
<recvBy>David Hanson</recvBy>
<sCost>385</sCost>
<manifest>
  <item itemID="CM204">
     <itemName>Camshaft (Box 20)</itemName>
     <itemQty>10</itemQty>
     <itemPrice>289.95</itemPrice>
  </item>
  <item itemID="CR201">
     <itemName>Carburetor (Box 25)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>159.95</itemPrice>
  </item>
  <item itemID="CRK310"开发者_如何学编程>
     <itemName>Crankshaft (Box 10)</itemName>
     <itemQty>3</itemQty>
     <itemPrice>109.95</itemPrice>
  </item>
  <item itemID="DS503">
     <itemName>Distributor (Box 15)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>125.95</itemPrice>
  </item>
  <item itemID="EC501">
     <itemName>Engine Computer (Box 1)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>414.59</itemPrice>
  </item>
  <item itemID="OP460">
     <itemName>Oil Pump (Box 20)</itemName>
     <itemQty>3</itemQty>
     <itemPrice>214.95</itemPrice>
  </item>
  <item itemID="SP300">
     <itemName>Standard Spark Plugs (Box 100)</itemName>
     <itemQty>10</itemQty>
     <itemPrice>114.45</itemPrice>
  </item>
  <item itemID="SP310">
     <itemName>Delux Spark Plugs (Box 100)</itemName>
     <itemQty>10</itemQty>
     <itemPrice>139.95</itemPrice>
  </item>
  <item itemID="TB261">
     <itemName>Timing Belt (Box 40)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>94.90</itemPrice>
  </item>
  <item itemID="TR301">
     <itemName>Transmission (Box 1)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>310.95</itemPrice>
  </item>
  <item itemID="BA105">
     <itemName>Standard Batteries (Box 12)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>495.40</itemPrice>
  </item>
  <item itemID="BA205">
     <itemName>Security Batteries (Box 4)</itemName>
     <itemQty>3</itemQty>
     <itemPrice>289.95</itemPrice>
  </item>
  <item itemID="BA115">
     <itemName>Delux Batteries (Box 12)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>525.95</itemPrice>
  </item>
  <item itemID="SF305">
     <itemName>Standard Air Filters (Box 16)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>148.25</itemPrice>
  </item>
  <item itemID="FI372">
     <itemName>Fuel Injection Kits (Box 1)</itemName>
     <itemQty>15</itemQty>
     <itemPrice>129.95</itemPrice>
  </item>
  <item itemID="BRK681">
     <itemName>Brake Line Kit (Box 1)</itemName>
     <itemQty>25</itemQty>
     <itemPrice>29.95</itemPrice>
  </item>
  <item itemID="CF401">
     <itemName>Cooling Fans (Box 20)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>34.41</itemPrice>
  </item>
  <item itemID="ALT561">
     <itemName>Chrome-plated Alternators (Box 5)</itemName>
     <itemQty>3</itemQty>
     <itemPrice>105.95</itemPrice>
  </item>
  <item itemID="ALT610">
     <itemName>Alternator Case Kit (Box 1)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>69.95</itemPrice>
  </item>
  <item itemID="CC310">
     <itemName>Catalytic Converters (Box 5)</itemName>
     <itemQty>3</itemQty>
     <itemPrice>121.59</itemPrice>
  </item>
  <item itemID="CC315">
     <itemName>Universal Catalytic Converters (Box 5)</itemName>
     <itemQty>5</itemQty>
     <itemPrice>68.95</itemPrice>
  </item>
 </manifest>
 </delivery>

Here is the XSL

 <xsl:stylesheet version='1.0' 
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">       
 <xsl:output method="html"   version="4.0" /> 
 <xsl:template match="/"> 
 <html>     
 <head>       
 <title>Election Night Results</title>       
 <link href="autotxt.css" rel="stylesheet" type="text/css" />     </head>     
 <body>         
 <ul>             
 <xsl:for-each select="delivery/manifest/item">             
 <li> 
 <xsl:value-of select="itemName" />             
 </li>             
 </xsl:for-each>         
 </ul>
 <xsl:for-each select="delivery/wName">             
 <ul>              
 <li>
 <xsl:value-of select="wName" />             
 </li>             
 </xsl:for-each>         
 </ul>

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

My problem is why does it not display the wName?


The for-each changes the XPath scope, so it's looking for wName inside each manifest/item (which is why selecting itemName works). You can either go back up the tree, by changing the select from "wName" to "../../wName", or alternatively define a variable for the document root at the top of the stylesheet (i.e. outside the for-each):

<xsl:variable name="doc" select="/"/>

Then inside the for each you can do

<xsl:value-of select="$doc/delivery/wName"/>


In your code:

    <xsl:for-each select="delivery/wName">
        <ul>
            <li>
                <xsl:value-of select="wName" />
            </li>
        </ul>
   </xsl:for-each>

You want to output the string value of the wName child of delivery/wName. However no wName element has a wName child.

Solution: Just output the string value of the already current wName:

Replace:

   <xsl:value-of select="wName" />

with

   <xsl:value-of select="." />
0

精彩评论

暂无评论...
验证码 换一张
取 消