Я пытаюсь разбить проблему на самый простой пример, надеюсь, вы понимаете.Итак, XML выглядит следующим образом:
<!-- FruitsID12345 is the id I want -->
<Fruits id="system://data/Fruits/FruitsID12345/?language=en-GB" majorVersion="1">
<Header> A header - not important </Header>
<!-- interesting is 'Strawberry' and the 'id' behind it -->
<Strawberry id="system://data/Strawberry/StrawberryID12345/?language=en-GB" version="2">
<Description> Some text - not important </Description>
<Content> Can be filled with content </Content>
<Strawberry>
</Fruits>
<!-- There can be more Stawberries just with other IDs -->
<MuchMoreFruits>.....</MuchMoreFruits>
<Lemon>
<!-- 'targetid' and 'href' are the same -->
<Text> Click the following link:
<Link targetid="system://data/Strawberry/StrawberryID12345/"
version="2" href="system://data/Strawberry/StrawberryID12345/">Click me
</Link>
</Text>
</Lemon>
Что мне нужно:
{id from Fruits} {major-version from Fruits} {object-type from Fruits} {component-information}
Информация о компонентах следующая:
{id from Strawberry} {version from Strawberry} {object-type from Strawberry}
Таким образом, решение должно выглядетьвот так:
<a href="" my.id="FruitsID12345" my.majorVersion="1" my.type="Fruits"
my.component="StrawberryID12345_2_Strawberry">Click me</a>
Я уже сделал составную часть, которая выглядит примерно так:
<xsl:template match="Link">
<a>
<!-- think I can put that part in <a> -->
<xsl:attribute name="href"/>
<xsl:attribute name="my.component>
<!-- template to get the id -->
<!-- substring-before(substring-after(substring-after(., 'data/'), '/'), '/') -->
<xsl:apply-templates select="@targetid"/>
<xsl:text>_</xsl:text>
<xsl:value-of select="@version"/>
<xsl:text>_</xsl:text>
<!-- template to get the object-type -->
<!-- substring-before(substring-after(@targetid, 'data/'), '/') -->
<xsl:call-template name="objecttype"/>
</xsl:attribute>
</a>
Так чего не хватает?
Информация от .Каким-то образом мне нужно сравнить 'StrawberryID' в с StrawberryID, который находится внутри .