2つのXMLファイル/ストリングを作成するために使用するXSLTファイルがあります。問題は、私は同じテンプレートマッチングを使用することができないということです。1つのXSLTから2つのXMLファイルを作成する(Java)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Frame/AAA">
<xsl:for-each select=".">
<Frame xmlns="MyNamespace.com">
<BBB>
<!-- Stuff here -->
</BBB>
</Frame>
</xsl:for-each>
</xsl:template>
<xsl:template match="Frame/AAA">
<xsl:for-each select=".">
<Frame xmlns="MyNamespace.com">
<WWW>
<!-- Stuff here -->
</WWW>
</Frame>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
XMLファイル:私は、このお持ちの場合
は
<Frame>
<AAA>
<!-- Stuff here -->
</AAA>
<Frame>
をだから私は両方のテンプレートを使用して、2つのXMLファイルを作成したいです。ただし、同じテンプレートのうちの2つを使用することは、見た目がわからないため許可されません。
これは私がXMLファイルを作成するために使用するJavaコードです:
// Get stylesheet (xslt) and xml data file
File stylesheet = new File(xsltFilepath);
InputSource inputSource = new InputSource(new ByteArrayInputStream(xmlString.getBytes()));
// Turn data file into document
Document document = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse(inputSource);
// Hold XML markup
StreamSource stylesource = new StreamSource(stylesheet);
// Turn source into a transformer object
Transformer transformer = TransformerFactory.newInstance().newTransformer(stylesource);
// Convert to a string
StringWriter stringWriter = new StringWriter();
transformer.transform(new DOMSource(document), new StreamResult(stringWriter));
// Return the string
return tringWriter.toString();
どのように私は私が望むものを達成することができますか?
あなたサクソン9とXSLT 2.0と 'XSL場合にのみ、二つの別々の結果文書を作成することができます。その結果、document'またはXalanの固有の拡張機能。異なるテンプレートでノードを2回処理する場合、モードを使用してテンプレートを区別します。 –
ありがとう、私はXSLT 2.0とモードを使用して調べます。例を提供することができれば、非常に役に立ちます。 –