У меня есть следующая структура XML, находящаяся в пространстве имен :
<School>
<SchoolInfo>
<SchoolName>The Big School</SchoolName>
<Opened>2008</Opened>
<SchoolID>SCH1122</SchoolID>
<Geograpics>
<Location>London</Location>
<PostCode>ZZ11 1ZZ</PostCode>
</Geographics>
</SchoolInfo>
<Pupil>
<Name>Tom</Name>
<LastName>Jones</LastName>
<Class>12B</Class>
<Age>16</Age>
</Pupil>
<Pupil>
<Name>Steve</Name>
<LastName>Jobs</LastName>
<Class>09A</Class>
<Age>17</Age>
</Pupil>
<Pupil>
<Name>Joe</Name>
<LastName>Blogs</LastName>
<Class>13A</Class>
<Age>15</Age>
</Pupil>
</School>
Используя XSLTl, я хочу создать PSV, который выглядит как следующая структура: (SchoolID | Location | Name| Class | Age)
SCH1122|London|Tom|12B|16
SCH1122|London|Steve|09A|17
SCH1122|London|Joe|13A|15
Возможно ли это с помощью XSLT и как мне поступить?
Код до сих пор:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="NamespaceHere"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:cs="urn:cs"
exclude-result-prefixes="cs x msxsl" >
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:strip-space elements="*"/>
<xsl:template match="x:SchoolID">
<xsl:value-of select="text()"/>
<xsl:text>|</xsl:text>
</xsl:template>
<xsl:template match="x:PostCode">
<xsl:value-of select="text()"/>
<xsl:text>|</xsl:text>
</xsl:template>
<xsl:template match="x:Name">
<xsl:value-of select="text()"/>
<xsl:text>|</xsl:text>
</xsl:template>
<xsl:template match="x:Class">
<xsl:value-of select="text()"/>
<xsl:text>|</xsl:text>
</xsl:template>
<xsl:template match="x:Age">
<xsl:value-of select="text()"/>
<xsl:text>|</xsl:text>
</xsl:template>
<xsl:template match="text()">
<xsl:apply-templates select="x:Message"/>
</xsl:template>
<xsl:template match="x:School">
<xsl:apply-templates select="x:SchoolInfo/x:SchoolID"/>
<xsl:apply-templates select="x:SchoolInfo/x:Geographics/x:PostCode"/>
<xsl:apply-templates select="x:Pupil/x:Name"/>
<xsl:apply-templates select="x:Pupil/x:Class"/>
<xsl:apply-templates select="x:Pupil/x:Age"/>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
Это работает, когда яу меня есть только один ученик, однако, когда я получаю несколько учеников, на выходе получается следующее:
SCH1122 | Лондон | Лондон | Том | Стив | 12B | 09A | 16 | 17