2013-10-15 85 views
1

我有一個XSL文件,不斷提出上述錯誤。這裏是我的代碼:一個屬性,其值必須是QName的值爲''

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="xml"/> 
    <xsl:template match="faculty"> 
     <xsl:element name='{fname}'> 
      <xsl:for-each select="students/name"> 
       <name> 
        <xsl:value-of select="."/> 
       </name> 
      </xsl:for-each> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

這裏是我的源XML文件的一部分:

<faculties xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
     xsi:noNamespaceSchemaLocation='257lab2a.xsd'> 
     <faculty> 
      <fname>literal arts</fname> 
      <students> 
       <name>ron dell</name> 
       <mark>52</mark> 
       <phone number='349-095-9867'></phone> 
       <courseCategory category='full time'></courseCategory> 
       <courseNo courseNumber='LART433'></courseNo> 
      </students> 
     </faculty> 
    </faculties> 
+0

最可能的解釋是,在你的'faculty'元素之下沒有名爲'fname'的元素,或者'fname'是空白的。你能告訴我們你的輸入XML嗎? – JLRishe

+0

只是編輯它。 –

回答

1

這似乎是因爲FNAME包含文本這不是一個有效的元素名稱(不能包含空間)。請嘗試以下操作,但請記住,您可能還需要解決其他情況,具體取決於您的數據。

<xsl:template match="faculty"> 
    <xsl:element name="{translate(fname, ' ', '_')}"> 
     <xsl:for-each select="students/name"> 
      <name> 
       <xsl:value-of select="."/> 
      </name> 
     </xsl:for-each> 
    </xsl:element> 
</xsl:template> 
+0

工作,謝謝。 –

相關問題