XSLT Transformation ERROR

Я очень плохо знаком с XML и XSLT. Я пытаюсь "преобразовать" документ XML с помощью xslt. К сожалению, это не работает правильно. Я получаю следующую ошибку: "Ошибка при преобразовании XSLT: Ошибка преобразования XSLT". в FireFox при попытке загрузить XML-файл. Chrome просто загружает пустую страницу. Файлы XML и XSLT загружаются в браузер независимо, что указывает на то, что они хорошо сформированы. Вот файл XSL:

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

<wb:template match="/">
  <html>
  <body>
    <h2>Name: <wb:value-of select="wb:world/wb:name" /></h2>
    <p><wb:vlaue-of select="wb:world/wb:desc" /></p>
  </body>
  </html>
</wb:template>

</wb:stylesheet>

и вот файл XML:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="./world.xsl"?>
<world
xmlns:wb="http://www.w3.org/2001/XMLSchema-instance" 
wb:schemaLocation="./ world.xsd">
    <wb:name>Arizelos</wb:name>
    <wb:desc>
    </wb:desc>
    <wb:nation>
        <wb:name>Whatever</wb:name>
        <wb:map>map01.png</wb:map>
        <wb:number>1</wb:number>
        <wb:desc>Whatever</wb:desc>     
        <wb:county>
            <wb:name>Whatever</wb:name>
            <wb:size>City-State</wb:size>
            <wb:number>1</wb:number>
            <wb:desc>Whatever</wb:desc>     
            <wb:community>
                <wb:name>Test</wb:name>
                <wb:size>City</wb:size>
                <wb:number>1</wb:number>
                <wb:desc>Whatever</wb:desc>     
                <wb:profession>
                    <wb:name>Sorcerer</wb:name>
                    <wb:number>1</wb:number>
                    <wb:desc>Whatever</wb:desc>     
                    <wb:person>
                        <wb:name>Harry Potter</wb:name>
                        <wb:number>1</wb:number>
                        <wb:desc>Whatever</wb:desc>
                        <wb:charsheet>
                        </wb:charsheet>
                    </wb:person>
                </wb:profession>
            </wb:community>
        </wb:county>
    </wb:nation>
    <wb:religion>
        <wb:name>Phony</wb:name>
        <wb:desc>But aren't they all?</wb:desc>
        <wb:deity>
            <wb:name>John Doe</wb:name>
            <wb:gender>Male</wb:gender>
            <wb:desc>I never considered him divine</wb:desc>
        </wb:deity>
    </wb:religion>
</world>

Заранее спасибо за любую помощь, оказанную:)

1 ответ

Есть много проблем с вашим кодом. Позвольте мне указать на некоторые из них.

В вашей таблице стилей XSLT

  • вы объявили нестандартный префикс для пространства имен XSLT: xmlns:wb="http://www.w3.org/1999/XSL/Transform", Хотя вы можете использовать любой префикс, который захотите, xsl является стандартом де-факто для него. Все остальное просто сбивает с толку.
  • вы не объявили пространство имен, которое присутствует во входном XML (http://www.w3.org/2001/XMLSchema-instance).
  • Кроме того, к сожалению, вы используете один и тот же префикс для обозначения разных URI пространства имен в таблице стилей XML и XSLT.
  • Вы ссылаетесь на wb:world даже если world элемент не имеет пространства имен
  • Ваша таблица стилей - версия 3.0, но ваш браузер поддерживает только 1.0, а XSLT 3.0 все еще находится в рабочем состоянии.
  • есть опечатка: vlaue-of который должен читать xsl:value-of

В вашем входном XML,

  • есть это объявление пространства имен: xmlns:wb="http://www.w3.org/2001/XMLSchema-instance", Опять же, это нестандартный префикс - вы должны использовать xsi, Однако я не уверен, собирались ли вы вообще использовать пространство имен для экземпляров схемы.

стилей

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

   <xsl:template match="/">
     <html>
     <body>
       <h2>Name: <xsl:value-of select="world/wb:name" /></h2>
       <p><xsl:value-of select="world/wb:desc" /></p>
     </body>
     </html>
   </xsl:template>

</xsl:stylesheet>

Выход

desc пусто, поэтому внутри ничего не выводится p,

<html xmlns:wb="http://www.w3.org/2001/XMLSchema-instance">
   <body>
      <h2>Name: Arizelos</h2>
      <p>

      </p>
   </body>
</html>
Другие вопросы по тегам