почему моя xml-страница не отображается несмотря на правильные dtd и xsl? - PullRequest
0 голосов
/ 02 ноября 2019

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

Вот мой xml-файл

<?xml version="1.0"?>
<!DOCTYPE college SYSTEM "college.DTD">
<?xsl-stylesheet  type="text/xsl" href="college.XSL"?>

<college>

<student>
<name>vipul</name>
<age>16</age>
<roll>12</roll>
</student>

<student>
<name>vipul</name>
<age>16</age>
<roll>12</roll>
</student>

<student>
<name>vipul</name>
<age>16</age>
<roll>12</roll>
</student>

</college>

Это мой xsl-файл

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

    <html>
    <head>
    <title>college</title>
    <head>

    <body>
    <table border="1" align="center">
    <tr bgcolor="yellow">
    <th>name</th>
    <th>age</th>
    <th>roll</th>
    </tr>

    <xsl:for-each select="college/student">
    <tr>
    <td><xsl:value-of select="name" /></td>
    <td><xsl:value-of select="age" /></td>
    <td><xsl:value-of select="roll" /></td>
    </tr>
    </xsl:for-each>
    </table>
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>

И, наконец, этомой внешний файл dtd. Здесь я определил соответствующую структуру кода

<?xml version="1.0">
<!DOCTYPE college(student)>
<!ELEMENT student(name,age,roll)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT age(#PCDATA)>
<!ELEMENT roll(#PCDATA)>

все кажется правильным, но я не получаю желаемый вывод xml. почему это происходит?

1 Ответ

1 голос
/ 02 ноября 2019

В ваших файлах есть две ошибки:

  1. Ваш файл DTD недействителен. См. этот ответ . Это объясняет, что внешние файлы DTD не должны содержать объявление

    <!DOCTYPE college(student)>
    

    . Таким образом, ваш файл DTD должен просто выглядеть (я добавил + к вашему элементу college, чтобы включить несколько student дочерних элементов)

    <?xml version="1.0" encoding="utf-8" ?>
    <!ELEMENT college (student+)>
    <!ELEMENT student (name,age,roll)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT age (#PCDATA)>
    <!ELEMENT roll (#PCDATA)>
    
  2. Ваш браузер не распознаетссылка на ваш XSLT-код в XML-файле, потому что в вашей декларации есть опечатка. Правильное написание в начале вашего XML-файла:

    <?xml-stylesheet... 
    

    вместо

    <?xsl-stylesheet....
    

Надеюсь, это поможет.

...