У меня возникли проблемы с тем, чтобы мой шаблон совпадал с работой, я пытаюсь выполнить итерацию по каждому из атрибутов, используя сопоставление шаблонов, вместо выражения xsl: for-each.руководство по оформлению шаблона xslt
Вот файл XML
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?xml-stylesheet type="text/xsl" href="template.xslt"?>
<x:recording xmlns:x="http://www.example.com/xmlns/record20080320" x:ref="889002005990000" x:version="11.0">
<x:finalized>true</x:finalized>
<x:segment>
<x:contenttype>mp3</x:contenttype>
<x:starttime>2015-07-26T19:15:48.327+04:00</x:starttime>
<x:attributes>
<x:tag x:timestamp="2015-07-26T19:15:48.719+04:00">
<x:attribute x:key="ref">123456</x:attribute>
</x:tag>
<x:tag x:timestamp="2015-07-26T19:15:48.719+04:00">
<x:attribute x:key="genre">rock</x:attribute>
</x:tag>
<x:tag x:timestamp="2015-07-26T19:15:48.719+04:00">
<x:attribute x:key="artist">Anees CK</x:attribute>
</x:tag>
</x:attributes>
<x:systemtype>Windows</x:systemtype>
<x:multipart>
<x:primary>889002005990000</x:primary>
</x:multipart>
<x:duration>6</x:duration>
</x:segment>
</x:recording>
И это мой шаблон,
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:x="http://www.example.com/xmlns/record20080320" >
<xsl:output method="xml" indent="yes" omit-xml-declaration="no" />
<xsl:template match="x:recording">
<Call xmlns:xsi="http://www.w3.org/20001/XMLSchema-instance">
<Data>
<finalized>
<xsl:value-of select="x:finalized"/>
</finalized>
<test111>
<xsl:text>some text</xsl:text>
</test111>
<contenttype>
<xsl:value-of select="x:segment/x:contenttype"/>
</contenttype>
<sometag>
<xsl:value-of select="x:segment/x:attributes/x:tag/x:attribute"/>
</sometag>
<xsl:template match="x:attributes">
<xsl:text>found attribute</xsl:text>
</xsl:template>
</Data>
</Call>
</xsl:template>
</xsl:stylesheet>
Может кто-нибудь увидеть, что я делаю неправильно? Спасибо заранее.
Шаблоны не могут быть вложенными. Каков результат, который вы ищете? –