#xml #xslt #xslt-1.0
#xml #xslt #xslt-1.0
Вопрос:
Как преобразовать этот XML-файл:
<file>
<text ID="201" date="2014-05-04">
<user_name>user_11</user_name>
<message> HELLO </message>
</text>
</file>
в этот XML-файл с помощью XSLT 1.0:
<doc>
<user name="user_11">
<text id="201" date="2014-05-04"> HELLO </text>
</user>
</doc>
Также, если у вас есть какие-либо ресурсы по этому вопросу, пожалуйста, опубликуйте, потому что у меня гораздо больше файлов XSLT для кода. Спасибо
Комментарии:
1. Я откатил ваш вопрос к его первоначальной форме, иначе ответы не имеют смысла.
Ответ №1:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<doc>
<xsl:for-each select="file/text">
<user name="{user_name}">
<text id="{@ID}" date="{@date}">
<xsl:value-of select="message" />
</text>
</user>
</xsl:for-each>
</doc>
</xsl:template>
</xsl:stylesheet>
Ответ №2:
Я предполагаю, что у вас есть контейнер files в вашем XML
, в любом случае вы ищете что-то вроде этого:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<docs>
<xsl:for-each select="files/file">
<xsl:element name="doc">
<xsl:element name="text">
<xsl:attribute name="name">
<xsl:value-of select="text/user_name" />
</xsl:attribute>
<xsl:element name="text">
<xsl:attribute name="id">
<xsl:value-of select="text/@ID" />
</xsl:attribute>
<xsl:attribute name="date">
<xsl:value-of select="text/@date" />
</xsl:attribute>
<xsl:value-of select="text/message" />
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:for-each>
</docs>
</xsl:template>
</xsl:stylesheet>
Комментарии:
1. XSLT является подробным, но он не должен быть таким подробным. Вы можете выводить литеральные элементы, записывая их непосредственно в результирующее дерево, и вы можете использовать шаблон значения атрибута для сокращения вашего кода. w3.org/TR/xslt/#section-Creating-Elements-and-Attributes
2. @michael.hor257k пожалуйста, опубликуйте свой ответ, я хотел бы узнать, что вы намерены