Я пытаюсь создать XML-файл с помощью XSLT. У меня есть сценарий оболочки BASH, который использует команду WGET для загрузки копии файла XML из VLC Media Player каждые 5 секунд. Ниже приведен пример раздела XML-файла, который содержит информацию, которую я хотел бы создать с помощью XSLT. Обратите внимание, что в примере XML есть множество тегов, которые начинаются с < info name = 'уникальный' > и заканчивается </info >. Например, первый тег: < info name = 'date'/info > и третий тег: < info name = 'filename' > Что-то в пути </info >.Форматирование тегов XML для XSLT
<category name="meta">
<info name='date'>1991</info>
<info name='artwork_url'>file://D:/Music/Nirvana/Nevermind/Folder.jpg</info>
<info name='filename'>Something in the Way</info> </category>
Я использую этот код в заголовке файла XML для стилизации XML.
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
Когда я воспитываю .xml файл в браузере, это стилизовано с помощью XSLT. Однако отображается только первый тег <info>. В этом примере будет отображаться только < info name = 'date'/info >. Моя общая цель - отобразить только имя и имя песни в браузере.
Я на самом деле есть то, что я думаю, что это очень необычное решение, которое было бы использовать команду SED или AWK в Linux в сочетании с некоторыми типами опции auto_increment, чтобы найти и заменить текстовую информацию так, чтобы XML преобразуется во что-то вроде ниже. Затем я смогу настроить XSLT для чтения info1, info2, info3 и т. Д.
<info1>data</info1>
<info2>data</info2>
<info3>data</info3>
Это трудно сделать этот необычный обходной путь, потому что VLC выходы динамических Ставки тегов, поэтому один XML-файл может иметь < информация имя = «дата» > тег, и следующий файл XML может не содержать тег < info = 'date' >, поэтому я не могу использовать команду AWK, которая ожидает, что $ 27 всегда будет < info name = 'date' >. Это также похоже на то, что это не может быть рекомендованным решением этой проблемы и, вероятно, является изменчивым методом, поэтому я размещаю здесь вопрос для обратной связи.
Я также провел некоторое исследование пространства имен XML, но я не был уверен, стоит ли мне сосредоточиться на пространстве имен здесь. Любое понимание, советы или рекомендации были бы очень оценены.
<?xml version="1.0"?>
<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>
</tr>
<xsl:for-each select="category">
<tr>
<td><xsl:value-of select="info"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Вы можете использовать любое имя атрибута, который вы хотите в вашем 'выберите = "данные"' строки. – usr2564301
Благодарим вас за рекомендацию @Jongware! Предположим, что у моего XML есть 1991 и Nirvana . В моей таблице стилей XSLT отобразит 1991 в браузере. Я пробовал другие варианты. Если я попробую , браузер не отображает никаких данных. Если я попробую , браузер выдает ошибку xpath. –
JeremyCanfield