XSLT: Преобразование в несодержание XML?

Действительно ли возможно использовать XSLT для преобразования XML во что-то другое, чем XML?

например, я хочу заключительное несодержание XML:

<Content>
   <image url="file1.png">
   <image url="file2.png">
   ...
   <image url="filen.png">
<EndContent>

Вы - уведомление, этот документ не является xml (или даже HTML), но это действительно имеет <elements>.

Действительно ли это возможно, с помощью XSLT, для генерации вывода non-xml?


Другой пример вывода non-xml мог бы быть:

<HTML>
<BODY>
   <IMG src="file1.png"><BR>
   <IMG src="file2.png"><BR>
   ...
   <IMG src="filen.png"><BR>
</BODY>
</HTML>

Вы заметите, что этим документом является HTML, потому что в HTML IMG и BR тегам запрещают наличие закрывающего тэга. Этот constrasts с xhtml, переформулировкой HTML с помощью xml, где все элементы требуются от наличия закрывающего тэга (потому что в xml каждый тег должен быть закрыт).


Другой пример вывода non-xml мог бы быть:

INSERT INTO Documents (Filename) VALUES ('file1.png')
INSERT INTO Documents (Filename) VALUES ('file2.png')
...
INSERT INTO Documents (Filename) VALUES ('file3.png')

я могу составить любой источник xml, мне нравится, но один пример мог бы быть:

Источник xml:

<DocumentStore>
   <Document type="image">file1.png</Document>
   <Document type="image">file2.png</Document>
   <Document type="image">filen.png</Document>
</DocumentStore>    

Или возможно:

<Profiles>
   <User avatar="file1.png" />
   <User avatar="file2.png" />
   <User avatar="filen.png" />
</Profiles>
6
задан Ian Boyd 5 May 2010 в 23:35
поделиться

3 ответа

Вы можете использовать для указания формата вывода, который не обязательно должен быть xml, см. эту справочную страницу.

Однако, если вы выводите html, ни один современный браузер не должен жаловаться, даже если вы ставите закрывающие теги, поэтому, используя ваш пример выше, я считаю, что весь браузер должен быть в порядке с :-

<HTML>
<BODY>
   <IMG src="file1.png"></IMG><BR></BR>
   <IMG src="file2.png"></IMG><BR></BR>
   ...
   <IMG src="filen.png"></IMG><BR></BR>
</BODY>
</HTML>

Так что не слишком уверен, почему вы не хотите ставить закрывающий тег, если я что-то не упускаю.


Update: Добавлен пример вывода non xml

Задана эта таблица стилей:-

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" />
    <xsl:template match="/filenames">

    <xsl:for-each select="filename">
    INSERT INTO Documents (Filename) VALUES ('<xsl:value-of select="." />')
    </xsl:for-each>

    </xsl:template>
</xsl:stylesheet>

и этот входной xml:-

<?xml version="1.0" encoding="UTF-8"?>
<filenames>
    <filename>file1.png</filename>
    <filename>file2.png</filename>
    <filename>file3.png</filename>
</filenames>

Вывод будет выглядеть следующим образом:-

INSERT INTO Documents (Filename) VALUES ('file1.png')

INSERT INTO Documents (Filename) VALUES ('file2.png')

INSERT INTO Documents (Filename) VALUES ('file3.png')
8
ответ дан 8 December 2019 в 18:33
поделиться

Независимо от того, как вы создаете свои теги IMG,

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<HTML>
<BODY>
   <xsl:element name="IMG">
   <xsl:attribute name="src">file1.png</xsl:attribute>
   </xsl:element>
   <IMG src="file2.png"></IMG>
   <IMG src="filen.png"/>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>

Метод вывода «html» не позволяет закрывать теги IMG.

<HTML>
<BODY><IMG src="file1.png"><IMG src="file2.png"><IMG src="filen.png"></BODY>
</HTML>
4
ответ дан 8 December 2019 в 18:33
поделиться

Да, вы можете, используя xsl:output элемент в таблице стилей.

1
ответ дан 8 December 2019 в 18:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: