2013-10-15 4 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

Наиболее вероятным объяснением является отсутствие элемента с именем 'fname' под одним из ваших элементов' faculty' или 'fname' пустым. Можете ли вы показать нам свой входной XML? – JLRishe

+0

только что отредактировал его. –

ответ

1

Это, кажется, потому что имя_файла содержит текст, который не является допустимым именем элемента (не может содержать пространство). Попробуйте следующее, но имейте в виду, что в зависимости от ваших данных могут потребоваться другие случаи, которые вам необходимо адресовать.

<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

который работал, спасибо. –

Смежные вопросы