Я работаю над своим первым XSL-файлом все выходные и понедельник, но не только что-то не так с ним, что не позволяет мне преобразовать его в XML-документ на основе DTD, но он также имеет ошибки, которые я не могу представить выяснить. Мне удалось исправить некоторые очевидные проблемы, но все задание меня спрашивает:Почему мой XSL не может быть преобразован в XML-документ и как его заставить проверить?
Добавить элемент «клиенты» в корневой шаблон, применить шаблон заказа и добавить узел атрибута id, используя custid как value ... Затем создайте элемент order с атрибутом идентификатора заказа, взятым из источника, а затем добавьте другие элементы и атрибуты со значениями, взятыми из источника. Возможно, у меня так много проблем, потому что все примеры, которые я читал, использовали теги HTML внутри документа XSL, но этот формат должен быть XML.
Вот мой код и источник:
<!ELEMENT customers (customer)*>
<!ELEMENT customer (order)>
<!ATTLIST customer id CDATA #IMPLIED>
<!ELEMENT order (qty, date, amount)>
<!ATTLIST order orderid CDATA #IMPLIED>
<!ELEMENT qty (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT amount (#PCDATA)>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
\t xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
\t <xsl:output method="xml"
\t \t doctype-system="customers.dtd"
\t \t encoding="ISO-8859-1"
\t \t indent="yes" />
\t \t
<xsl:template match="/">
<xsl:comment>
\t Author: Paulina Crawford
\t Date: 10/10/2015
\t </xsl:comment>
\t
<xsl:element name="customers">
<xsl:apply-templates
\t select="orders/order">
<xsl:sort select="custid" />
</xsl:element>
</xsl:template>
<xsl:apply-templates select="order">
<xsl:element name="customer">
\t <xsl:attribute name="id">
\t <xsl:value-of select="@custid" />
\t <xsl:element name="order">
\t <xsl:attribute name="orderid">
\t <xsl:value-of select="@id" />
\t <xsl:element name="qty">
\t <xsl:value-of select="@qty" />
\t <xsl:element name="date">
\t <xsl:value-of select="date" />
\t <xsl:element name="amount">
\t <xsl:value-of select="amount" />
\t </xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="clist.xsl" ?>
<orders>
<order id="OR3124" qty="1" custid="CUST204">
<date>5/1/2017</date>
<amount>$108.24</amount>
</order>
<order id="OR3125" qty="2" custid="CUST117">
<date>5/1/2017</date>
<amount>$78.21</amount>
</order>
<order id="OR3126" qty="1" custid="CUST311">
<date>5/1/2017</date>
<amount>$45.93</amount>
</order>
<order id="OR3127" qty="4" custid="CUST091">
<date>5/2/2017</date>
<amount>$68.21</amount>
</order>
<order id="OR3128" qty="1" custid="CUST137">
<date>5/2/2017</date>
<amount>$117.24</amount>
</order>
<order id="OR3129" qty="1" custid="CUST128">
<date>5/3/2017</date>
<amount>$75.68</amount>
</order>
<order id="OR3130" qty="2" custid="CUST083">
<date>5/3/2017</date>
<amount>$58.93</amount>
</order>
<order id="OR3131" qty="1" custid="CUST304">
<date>5/3/2017</date>
<amount>$112.25</amount>
</order>
</orders>
Ошибка я получаю продолжает говорить, что я должен «прекратить действие или тег элемента», поскольку он является дубликатом или что-то. .. Если кто-то может помочь, он будет очень признателен ... Спасибо.
Большое вам спасибо, теперь это имеет смысл! – Pau808