Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSL样式表未在最终网页中显示所需内容_Xml_Xslt - Fatal编程技术网

Xml XSL样式表未在最终网页中显示所需内容

Xml XSL样式表未在最终网页中显示所需内容,xml,xslt,Xml,Xslt,我尝试了几种不同的方式来显示wName、wContact,但运气不好,所以我正在寻求帮助 这是我的页面 <delivery> <wName>Reston</wName> <wContact>John McAdams</wContact> <orderDate>8/15/2005</orderDate> <recvDate>8/21/2005</recvDate> <recvBy>

我尝试了几种不同的方式来显示wName、wContact,但运气不好,所以我正在寻求帮助

这是我的页面

<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>

莱斯顿
约翰·麦克亚当斯
8/15/2005
8/21/2005
大卫·汉森
385
凸轮轴(箱体20)
10
289.95
化油器(箱25)
5.
159.95
曲轴(箱10)
3.
109.95
分配器(第15框)
5.
125.95
发动机计算机(箱1)
5.
414.59
油泵(箱20)
3.
214.95
标准火花塞(框100)
10
114.45
Delux火花塞(箱100)
10
139.95
正时皮带(箱40)
5.
94.90
变速箱(箱1)
5.
310.95
标准电池(盒12)
5.
495.40
安全电池(箱4)
3.
289.95
消光电池(第12箱)
5.
525.95
标准空气过滤器(第16框)
5.
148.25
燃油喷射套件(箱1)
15
129.95
制动管路套件(箱1)
25
29.95
冷却风扇(框20)
5.
34.41
镀铬交流发电机(方框5)
3.
105.95
交流发电机箱套件(箱1)
5.
69.95
催化转化器(方框5)
3.
121.59
通用催化转化器(方框5)
5.
68.95
这是XSL样式表

 <?xml-stylesheet type="text/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">
 <xsl:for-each select="delivery/wName">
 <li>
 <xsl:value-of select="wName"/>
 <xsl:value-of select="itemName"/>
 </li>
 </xsl:for-each>
 </ul>
 </body>
 </html>
 </xsl:template>
 </xsl:stylesheet>

您的XML很好。我已经纠正了XSL中的一些错误。试试这个:

<?xml-stylesheet type="text/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>
<p><strong>wName:</strong><xsl:value-of select="/delivery/wName"/></p>
<p><strong>wContact:</strong><xsl:value-of select="/delivery/wContact"/></p>
<h2>Parts</h2>
<table>
<tr>
    <th>Item</th>
    <th>Quantity</th>
    <th>Price</th>
</tr>
<xsl:for-each select="/delivery/manifest/item">
<tr>
    <td><xsl:value-of select="itemName"/></td>
    <td><xsl:value-of select="itemQty"/></td>
    <td><xsl:value-of select="itemPrice"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

选举夜结果
wName:

w联系方式:

部分 项目 量 价格
这一行:

<xsl:value-of select="/delivery/wName"/>
<xsl:for-each select="/delivery/manifest/item">

从指定为根元素的delivery元素中选择wName元素

这一行:

<xsl:value-of select="/delivery/wName"/>
<xsl:for-each select="/delivery/manifest/item">

告诉XSL解释器循环遍历/delivery/manifest中的每个项元素

这一行:

<li><xsl:value-of select="itemName"/></li>
  • 将ltemName元素中的文本节点输出到li html元素中。因为您在一个foreach元素中,该元素正在选择/delivery/manufest/item元素,所以您只需在希望输出的item元素中提供元素的名称,在本例中为itemName

    这一行告诉解释器停止循环:

    </xsl:for-each>
    
    
    

    希望这有所帮助?

    您的代码表明您还不了解XSLT和XPath中上下文的工作方式。当使用xsl:for-each时,select表达式选择的每个节点都将成为上下文节点,用于计算循环中的其他路径表达式

    所以当你写这篇文章时:

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

  • 第2行开始查找作为前一行中选择的item元素的子元素的delivery元素,而第4行开始查找作为第2行中选择的wName元素的子元素的wName元素。这显然不是你想要的。第2行可能应该以“/delivery”开头,从树的根目录中进行选择,而第4行应该使用“select=”。“选择上下文项而不是其子项。

    您已经为每个元素打开了两个xsl:for,并且在开始时只关闭了一个xsl:for。delivery元素是XML的根元素吗?是的。我想我可以为每个添加另一个,然后选择wName,但它不是这样工作的。我只是想让它显示出来。我可以稍后格式化它,我只是无法显示。但我已经尝试为每一个创建另一个,但没有运气。你能给我举个你认为它应该是什么样子的例子吗。我试着让它毫无乐趣地工作。它返回的东西和我的一样。我只是得到了零件清单。我编辑了我的答案,为你提供了一个我将如何做到这一点的例子。这比我想象的要复杂得多。我确实会申请,但我对这个还是相当陌生,需要很多人手。没关系。您可以在这里获得有关XSLT的教程:(w3schools.com不是由W3C运行的)