Я хотел бы включить содержимое XML-документа в другой документ XML и преобразовать его через xmlstarlet + XSLT. Я пытаюсь использовать XInclude. (Новичок в XInclude и XSLT, я есть.) Xmlstarlet, однако, не будет обрабатывать входящий XML-документ, он просто оставляет узел включения там нетронутым.XMLStarlet + XInclude + XSLT
Файл a.xml
:
<?xml version="1.0" ?>
<doc xmlns:xi="http://www.w3.org/2001/XInclude">
a
<xi:include href="b.xml" />
b
</doc>
Файл b.xml
:
<?xml version="1.0" ?>
<snippet>
c
</snippet>
x.xsl
"транзитному" шаблон:
<?xml version="1.0" encoding="windows-1250" ?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:transform>
Командная строка для запуска:
xmlstarlet tr x.xsl a.xml
И ожидаемый результат будет что-то вдоль линий:
<?xml version="1.0" ?>
<doc xmlns:xi="http://www.w3.org/2001/XInclude">
a
<snippet>
c
</snippet>
b
</doc>
Тем не менее, результат я получаю:
<?xml version="1.0"?>
<doc xmlns:xi="http://www.w3.org/2001/XInclude">
a
<xi:include href="b.xml"/>
b
</doc>
Теперь, что я делаю неправильно?
Проверьте параметры, указанные на 'XMLStarlet тр --help' – npostavs
я сделал, и на самом деле я нашел --xinclude параметр. Но, как я вижу из ответа М. М., я не использовал его должным образом. Почему я написал «-xinclude = b.xml», теперь я не понимаю. – nop77svk