当前位置: 首页 > 知识库问答 >
问题:

在XSLT中将XML转换为字符串(CDATA)

解修然
2023-03-14

最近我一直在使用Altova Map Force构建XSL转换,我遇到了一个问题。为了创建一个有效的XML输出文件(从一个输入文本文件创建,该文件非常简单),它需要包含一些xmlns属性标记。

不幸的是,我无法在Map Force或我的数据转换工具(由基于Saxon的客户机构建)中找到有效的方法(修改了输出xsd模式定义和属性强制)。因此,我的解决方案是将生成的XML解析到另一个(最终)转换器中,在该转换器中,文件的XML元素被转换为包含XML字符串表示形式(即返回的文件字符串)的单个文本块,然后修剪父元素声明,并使用修改后的元素对其进行修改(使用xmlns属性),然后将其输出以保存。

我已经做了一些测试,我可以有效地这样做,但是在那个测试中,我解析了一个预转换的xml字符串,该字符串具有应用于它的函数。那么,有人能告诉我如何,在xslt中,我可以将元素集合转换成一个字符串,我可以修改并返回为CDATA(变压器程序将转换为字符串并直接将其转储到输出文件中)?

共有2个答案

慎兴业
2023-03-14

如果成功,我必须修改XSD模式,并将targetNamespace设置为与模式中的xmlns相同,以及elementFormDefault=“qualified”,这将输出xml修改为适当的响应

郜俊健
2023-03-14

Altova产品线的最新版本支持XPath 3.0函数,如http://www.w3.org/TR/xpath-functions-30/#func-序列化,因此假设您所需要的是。

<xsl:output cdata-section-elements="foo"/>

<xsl:template match="bar">
  <foo><xsl:value-of select="serialize(.)"/></foo>
</xsl:template>

我认为Saxon的商业版本也支持该功能(如果您对样式表使用version=“3.0”)。

然而,您可能希望在一个单独的问题中发布真正的问题描述(您有输入,您想要输出),这样我们就可以看到您是否真的需要使用到目前为止概述的方法来确保您有某些名称空间声明

 类似资料:
  • XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输

  • 我将XML作为字符串传递给一个方法,并再次将其转换为XML来完成我的工作。 其正常工作正常,但当出现特殊字符时,如<代码> 我的XML字符串: 我的代码是: 错误: “=”是意外标记。预期标记为“;”。第1行,位置150。 完全错误为: 系统Xml。XmlException未由用户代码处理HResult=-2146232000消息=“=”是意外令牌。预期标记为“;”。第1行,位置150。源=系统。

  • 问题内容: 我正在尝试使用FOP和Java生成PDF文档。 我以字符串而不是文件的形式接收XML。 如何将该XML字符串转换为XML输入流,以便可以调用xslfoTransformer.transform(source,res); 其中source是我的XML字符串作为输入流。 请提供您的建议。 问题答案: 您可能希望将其转换为,而不是。使用StringReader执行此操作。StreamSour

  • 问题内容: 我有一个程序可以从套接字读取xml文档。我将xml文档存储在一个字符串中,我想将其直接转换为Python字典,就像在Django的库中一样。 举个例子: 然后看起来像 问题答案: 这是某人创建的一个很棒的模块。我已经使用过几次了。 http://code.activestate.com/recipes/410469-xml-as- dictionary/ 这是网站上的代码,以防万一链接

  • 问题内容: 如何将xml的所有元素值和属性值转换为字符串映射?有一些图书馆可以做到这一点吗?我找到了xStream库,但我不知道如何配置它。 问题答案: 我只是想这样:

  • 问题内容: 是的,是的,我知道有关此主题的问题很多。但是我仍然找不到解决我问题的方法。我有一个带属性的Java对象。例如客户,如本例所示。我想要它的字符串表示形式。为此,Google建议使用JAXB。但是在所有示例中,创建的XML文件都会打印到文件或控制台,如下所示: 但是我必须使用该对象并以XML格式通过网络发送。所以我想得到一个表示XML的字符串。 我怎样才能做到这一点? 问题答案: 您可以使