gpt4 book ai didi

java - 使用奇怪的标签编译样式表 XSL

转载 作者:行者123 更新时间:2023-11-30 02:42:59 26 4
gpt4 key购买 nike

这是我的 XML 文件和 java 方法:

测试.xml

<?xml version="1.0" encoding="UTF-8"?>
<orders>
<orderDetails>
<a:orderDetails6>
<a:MsgId>text1</a:MsgId>
<a:PartnerId>text1</a:PartnerId>
<a:OrderId>text1</a:OrderId>
</a:orderDetails6>
</orderDetails>
</orders>

RX.java

public class RX {
public static void main(String[] args) throws TransformerException, SAXException, IOException, ParserConfigurationException {
File stylesheet = new File("C:\\style.xsl");
File xmlSource = new File("C:\\test.xml");

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(xmlSource);

StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = TransformerFactory.newInstance().newTransformer(stylesource);

Source source = new DOMSource(document);

Result outputTarget = new StreamResult(new File("C:\\x.csv"));
transformer.transform(source, outputTarget);
}
}

样式.xsl

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

<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>

<xsl:template match="/">
<xsl:text>A:MsgId,A:PartnerId,A:OrderId
</xsl:text>
<xsl:for-each select="//orderDetails">
<xsl:for-each select="//a:orderDetails6">
<xsl:value-of select="concat(a:MsgId,',',a:PartnerId,',',a:OrderId,'&#xA;')"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

如果进入 XML 和 XLS,我有正常的标签,例如:

[MsgID]、[PartnerID]、[orderDetails6] 工作正常。

但是我的 XML 始终具有从 [a: ...] 开始的标记

知道如何解决吗?

最佳答案

XSLT 的 XML 输入需要是命名空间格式良好的。这意味着如果它使用像 <a:orderDetails6> 这样的限定名称,需要在命名空间声明中声明前缀( a ),例如 xmlns:a="some.uri" 。从技术上讲,您的 XML 符合 XML 规范,但不符合 XML 命名空间规范,但 XSLT(以及许多其他 XML 处理软件)需要同时符合两者。

您还需要在样式表中声明 namespace 。您不能使用类似 //a:orderDetails 的路径表达式除非前缀 a在 namespace 声明中声明。 (相反,您不需要 xmlns:fo 声明,因为从未使用过前缀 fo。)

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