Это XSL учитывая ваш вход (конечно, что делает его действительным с концом книгой тегом, а также окружающий выход с тем же тегом ... только один пример из 100 способов сделать то, что вы просили, и может даже не быть правильным, так как в вы пытаетесь вещи, помогает другим, чтобы понять, что вы действительно ищете, и все различные возможности
Вот XSL:.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<book>
<xsl:apply-templates/>
</book>
</xsl:template>
<xsl:template match="Title[child::subtitle]">
<Title>
<xsl:attribute name="subtitle">
<xsl:for-each select="subtitle">
<xsl:value-of select="text()"/>
</xsl:for-each>
</xsl:attribute>
<xsl:variable name="mixedtext">
<xsl:apply-templates select="descendant::text()[not(parent::subtitle)]"/>
</xsl:variable>
<xsl:value-of select="translate(normalize-space($mixedtext),' ','')"/>
</Title>
</xsl:template>
<xsl:template match="Title">
<Title>
<xsl:value-of select="."/>
</Title>
</xsl:template>
</xsl:stylesheet>
Вот результат:
<book>
<Title>blahblah</Title>
<Title subtitle="bcdffgdh">asdfg</Title>
<Title subtitle="bcdfxyza">jhukrefsdw</Title>
<Title subtitle="bcdftrey">fdgfjhdc</Title>
</book>
Точно, как вы просили (и, кстати, не так сложно, как вы заявили в своем комментарии). Взял 2 минуты.
Можно ли использовать XSLT 2.0? –
Ваш вопрос был проголосован, потому что вы вообще не пытаетесь что-либо попробовать. –
Да, вы можете использовать xslt 2.0, но было бы здорово, если бы вы могли предоставить результат в xslt 1.0 – Ankit