두 개의 별도 XML 파일/문자열을 만드는 데 사용할 XSLT 파일이 있습니다. 문제는 동일한 템플릿 일치를 사용할 수 없다는 것입니다.단일 XSLT (Java)에서 두 개의 XML 파일 만들기
나는이있는 경우 :
<?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>
그래서 내가 두 템플릿을 사용하여 두 개의 XML 파일을 만들려고합니다. 그러나 어디에서보아야할지 모르기 때문에 두 개의 동일한 템플릿을 사용하는 것은 허용되지 않습니다.
이것은 내가 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에 특정 확장자. 서로 다른 템플릿으로 노드를 두 번 처리하는 경우 모드를 사용하여 템플릿을 구별합니다. –
감사합니다. XSLT 2.0을 살펴보고 모드를 사용합니다. 예제를 제공 할 수 있다면 매우 유용 할 것입니다. –