gpt4 book ai didi

java - 从单个 XSLT 创建两个 XML 文件 (Java)

转载 作者:行者123 更新时间:2023-12-01 09:45:29 25 4
gpt4 key购买 nike

我有一个 XSLT 文件,我想用它来创建两个单独的 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();

如何才能实现我想要的目标?

最佳答案

如果您使用 XSLT 2.0 和模式,您可以使用例如

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" indent="yes"/>

<xsl:template match="/">
<xsl:apply-templates/>
<xsl:apply-templates mode="m2"/>
</xsl:template>

<xsl:template match="Frame/AAA">

<Frame xmlns="MyNamespace.com">
<BBB>
<!-- Stuff here -->
</BBB>
</Frame>

</xsl:template>

<xsl:template match="Frame/AAA" mode="m2">
<xsl:result-document href="result2.xml">
<Frame xmlns="MyNamespace.com">
<WWW>
<!-- Stuff here -->
</WWW>
</Frame>
</xsl:result-document>
</xsl:template>

</xsl:stylesheet>

关于java - 从单个 XSLT 创建两个 XML 文件 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com