Связывание xsl с XML не работает, когда определено целевое пространство имен

#xml #xslt

#xml #xslt

Вопрос:

Я создал XML-файл и преобразовал его в HTML с помощью xsl. Однако, когда я добавляю целевое пространство имен в файл XML, мой браузер неправильно обрабатывает файл. Когда я удаляю целевое пространство имен, оно работает нормально.

XML выглядит следующим образом:

 <root  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
 xmlns='http://xml.netbeans.org/schema/XmlSchema'
 xsi:schemaLocation='http://xml.netbeans.org/schema/XmlSchema XmlSchema.xsd'>
  

Когда строка xmlns='http://xml.netbeans.org/schema/XmlSchema' присутствует в XML, браузер обрабатывает ее неправильно. Когда эта строка удаляется, она работает правильно. В чем проблема?

Ответ №1:

Проблема, по-видимому, заключается в том, что вы не обрабатываете http://xml.netbeans.org/schema/XmlSchema пространство имен в вашем файле XSLT.

Я думаю… жаль, что мне приходится гадать — как вы думаете, кто-то может сказать вам, в чем проблема с вашим кодом, когда вы не показываете свой код?

Итак, я думаю, у вас есть что-то вроде этого:

 <xsl:stylesheet 
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
  <xsl:template match="root">
    <!-- etc ... -->
  </xsl:template>
</xsl:stylesheet>
  

где вы должны иметь

 <xsl:stylesheet 
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs='http://xml.netbeans.org/schema/XmlSchema'
>
  <xsl:template match="xs:root">
    <!-- etc ... -->
  </xsl:template>
</xsl:stylesheet>
  

Не обработка пространства имен. Соответствующим образом адаптируйте свой XSLT.

Комментарии:

1. Если вы попросите меня ввести код XSL, я бы это сделал! Я никогда не знал, что мне нужно обрабатывать пространство имен в файле XSL раньше. Это работает со мной, спасибо.

2. @Alaa Приятно слышать. В следующий раз вопрос, который не требует психической отладки, пожалуйста. 😉