Лист XSLT не используется - PullRequest
1 голос
/ 15 мая 2011

В непосредственной близости от XML я разработал лист XML вместе со схемой XSD и, наконец, лист XSLT для отображения содержимого. Когда я просматриваю лист данных XML в веб-браузере (сделано в visual studio), он говорит следующее:

Этот XML-файл не имеет никакой информации о стиле, связанной с ним. Дерево документов показано ниже.

Я пробовал разные пути к файлам и перепутал с заголовком, не случайно.

Данные XML

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xslt" href="lecturelayout.xslt"?>
<university>
<lesson>
  <subject>Biology</subject>
  <maintopic name="Human Biology">
    <subtopic>Enlarge Hearts</subtopic>
    <subtopic>Heart Valves</subtopic>
  </maintopic>
  <content>
    <sentance>Very long sentance one</sentance>
    <sentance>Very long sentance two</sentance>
    <sentance>Very long sentance three</sentance>
  </content>
</lesson>

  <lesson>
    <subject>Chemistry</subject>
    <maintopic name="Periodic Table">
      <subtopic>Enlarge Hearts</subtopic>
      <subtopic>Heart Valves</subtopic>
    </maintopic>
    <content>
      <sentance>Very long sentance one</sentance>
      <sentance>Very long sentance two</sentance>
      <sentance>Very long sentance three</sentance>
    </content>
  </lesson>
</university>

Лист XSLT - примечание может быть не на 100% правильным, очевидно, не может его проверить:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="@* | node()">
      <html>
        <body>
          <h1>Professional Training Facilities</h1>
            <strong>University: </strong>
            <xsl:for-each select="university/lesson">          
            <xsl:value-of select="subject"/>
          <br/>
          <p>
            <strong>Main Topic: </strong>
            <xsl:value-of select="maintopic=name"/>
          </p>
          <br/>
          <p>
            <strong>Sub Topics: </strong>
            <xsl:for-each select="maintopic">
              <p>
                <xsl:value-of select="subtopic"/>
              </p>
            </xsl:for-each>
          </p>
          <p></p>
          <strong>Content:</strong>
          <xsl:for-each select="content">
            <p>
              <xsl:value-of select="sentance"/>
            </p>
          </xsl:for-each>
          </xsl:for-each> 
          <br/>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

Помощь высоко ценится, потратила некоторое время на изучение этого, но просто не могу найти никакой информации о XSLT, в отличие от XSL.

РЕДАКТИРОВАТЬ: партнер только что скопировал это на своем компьютере (не то, что он программирует) и получает тот же результат, может кто-нибудь попробовать это, пожалуйста? :)

Ответы [ 2 ]

3 голосов
/ 15 мая 2011

Ваш тип атрибута должен быть text/xsl, а не text/xslt. Попробуйте

<?xml-stylesheet type="text/xsl" href="lecturelayout.xslt"?>
2 голосов
/ 15 мая 2011

В дополнение к настройке Инструкции обработки @type на type="text/xsl", как предлагает @Matt Gibson, вам необходимо настроить выражение соответствия для вашего шаблона.

Ваш шаблон настроен на соответствие каждому атрибутуи node() и создает несколько элементов <html> (недействительно).

Настройте соответствие шаблона для корневого узла:

<xsl:template match="/">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...