を使用してXML要素にセミコロンで文字列を分ける私がtransformatedているのxml:XSLT
<import>
<issue>
<article>
<languageVersion>
<title>some title</title>
<keywords>keyword1; keyword2; keyword3</keywords>
</languageVersion>
</article>
<article>
<languageVersion>
<title>some title</title>
<keywords>keyword1; keyword2; keyword3</keywords>
</languageVersion>
</article>
</issue>
</import>
そして今、私は、ターゲットXMLはこのようになるので、XSLT変換を使用して、セミコロンでタグ内のすべての単語を分けたい:
<import>
<issue>
<article>
<languageVersion>
<title>some title</title>
<keywords>
<keyword>keyword1</keyword>
<keyword>keyword2</keyword>
<keyword>keyword3</keyword>
</keywords>
</languageVersion>
</article>
<article>
<languageVersion>
<title>some title</title>
<keywords>
<keyword>keyword1</keyword>
<keyword>keyword2</keyword>
<keyword>keyword3</keyword>
</keywords>
</languageVersion>
</article>
<article>
</issue>
</import>
XSLT変換を使用してこれを行うにはどうすればよいですか?私はthereからのコードを使用して、すでにすでに試みたが、生憎のコードは、XML要素の残りの部分を破壊した
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="keywords">
<keywords>
<xsl:apply-templates/>
</keywords>
</xsl:template>
<xsl:template match="keywords" name="split">
<xsl:param name="pText" select="."/>
<xsl:param name="pItemElementName" select="'keyword'"/>
<xsl:if test="string-length($pText) > 0">
<xsl:variable name="vNextItem" select=
"substring-before(concat($pText, ';'), ';')"/>
<xsl:element name="{$pItemElementName}">
<xsl:value-of select="$vNextItem"/>
</xsl:element>
<xsl:call-template name="split">
<xsl:with-param name="pText" select="substring-after($pText, ';')"/>
<xsl:with-param name="pItemElementName" select="$pItemElementName"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
を試してみてください行われますが、それは要素の間のノードを作成されていません私はそれを得るために何を変えるべきですか? –
cerbin
私はこれを行うために私の答えを改めました。 –
これは優れています。私は答えを承認しました。これに加えて、どうにかしてすべてのキーワードから空白を削除することは可能ですか?だからキーワード2 の代わりにキーワード2 になります。 –
cerbin