2015-12-14 62 views
0

我是XML新手。我的XML文件包含兩個名稱空間。如果沒有定義名稱空間,我可以使用XSLT輕鬆地將XML轉換爲XHTML。當我嘗試使用路徑表達式在XSLT中使用名稱空間時,它不起作用。這是我的代碼。無法使用XSLT將XML(包含名稱空間)轉換爲XHMTL

data.xml中

<?xml version="1.0" encoding="utf-8" ?> 
<?xml-stylesheet type="text/xsl" href="style.xsl" ?> 
<a:personData xmlns:a="http://auc.com"> 
<a:user id="1"> 
    <a:fname>Assad</a:fname> 
    <a:lname>Ch</a:lname> 
    <a:email>[email protected]</a:email> 
</a:user> 

<a:user id="2"> 
    <a:fname>John</a:fname> 
    <a:lname>Smith</a:lname> 
    <a:email>[email protected]</a:email> 
</a:user> 
</a:personData> 

style.xsl

<?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> 
     <head> 
      <title>Some Title</title> 
     </head> 
     <body> 
      <p> 
       <xsl:value-of select="a:personData/a:user/a:fname" /> 
      </p> 
     </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

我無法弄清楚什麼是錯我的代碼。

回答

1

據我所知,你錯過了兩件事。 在XML爲personData元素的結束標記缺少命名空間前綴,它應該是

</a:personData> 

另外,在你的XSLT,您應該包括命名空間爲好,

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

應該成爲

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="http://auc.com"> 
+0

感謝您的幫助。其實我在這裏粘貼了我的xml源代碼時錯過了結束標記。正如你所建議的那樣,我在我的XLST文件中定義了命名空間,並且它工作正常。非常感謝。 – Rebbeca

+0

我編輯了你的文章,因爲它有格式問題。請找到關於格式化代碼的更多信息[這裏](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)。 –