2017-04-01 53 views
0

爲什麼斜線會導致文件io錯誤(無法打開xml文件)vs如果我特別使用名稱匹配它的作品?他們不是同義詞嗎?根節點斜槓vs根節點名稱

下面的代碼片段:

<xsl:template match="/"> <!-- In question, different results/vs root --> 
    <xsl:apply-templates select="greeting"/> 
    </xsl:template> 

示例XSLT

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 

    <xsl:output method="html"/> 

    <xsl:template match="/"> <!-- In question, different results/vs root --> 
    <xsl:apply-templates select="greeting"/> 
    </xsl:template> 

    <xsl:template match="greeting"> 
    <html> 
     <body> 
     <h1> 
      <xsl:value-of select="."/> 
     </h1> 
     </body> 
    </html> 
    </xsl:template> 
</xsl:stylesheet> 

示例XML

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="helloworld.xslt"?> 
<root> 
    <greeting> 
    Hello, World! 
    </greeting> 
    <greeting> 
    Hello, World Too! 
    </greeting> 
</root> 
+2

了'root'元素是'/' – Pawel

+0

可以請你提供多一點的孩子洞察力?爲什麼我在使用斜槓時會拋出異常? – Rod

回答

2

當您使用/你在documen t水平。

文檔級別上存在的唯一元素是<root>元素。但是您使用select屬性來說,特別是將模板應用於名爲greetings的元素,但這在文檔級別上不存在,它存在於您的<root>元素中。

您有三種選擇。

  1. 將其更改爲<xsl:template match="/root">
  2. 刪除選擇<xsl:apply-templates />
  3. 更改您的選擇<xsl:apply-templates select="root/greeting"/>