#xml #xslt #edg
#xml #xslt #edg
Вопрос:
Это XML, который у меня есть:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
</catalog>
<catalog>
<cd>
<title>Stop</title>
<artist>Sam Brown</artist>
<country>UK</country>
<company>A and M</company>
<price>8.90</price>
<year>1988</year>
</cd>
<cd>
<title>Bridge of Spies</title>
<artist>T`Pau</artist>
<country>UK</country>
<company>Siren</company>
<price>7.90</price>
<year>1987</year>
</cd>
</catalog>
Ниже приведен XSLT, где я пытаюсь получить данные с обоих корневых узлов :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title" /></td>
<td><xsl:value-of select="artist" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Он возвращает только 2 записи. Мне нужно получить 4 записи. Что я должен написать в инструкции select. Я попробовал обратную косую черту, звездочку. Не сработало. Пожалуйста, помогите!
Или как мне объединить два корневых узла в один корневой узел в xslt?
Фактический результат:
My CD Collection
Title Artist
------------------------------------
Empire Burlesque Bob Dylan
Hide your heart Bonnie Tyler
Желаемый результат:
My CD Collection
Title Artist
------------------------------------
Empire Burlesque Bob Dylan
Hide your heart Bonnie Tyler
Stop Sam Brown
Bridge of Spies T`Pau
Вы можете попробовать эту ссылку для тестирования. Пожалуйста, не забудьте скопировать и вставить XML, упомянутый выше:
https://www.w3schools.com/xml/tryxslt.asp?xmlfile=cdcatalogamp;xsltfile=cdcatalog_ex3
Комментарии:
1. Согласно спецификациям W3C 1.0 для правильно сформированных документов , документ XML не может иметь два корня. Используйте совместимые библиотеки DOM или исправьте использование их методов для его генерации. Не рассматривайте XML как текстовый файл, который обычно является причиной неправильной разметки.
2. Этот ввод должен выдавать ошибку от базового анализатора XML, как только анализируется второй
catalog
элемент.3. Если XML не может иметь два корневых узла, то мы можем объединить эти два корневых узла в один как узел каталогов. Как мы достигаем этого в XSLT. Пожалуйста, помогите.
4. пожалуйста, оставьте текущий вывод и желаемый вывод в вашем вопросе, чтобы помочь другим лучше понять ваш вопрос! @user14203304
5. @mohammadhassanbigdelishamlo отредактировал вопрос для лучшего понимания