java-XML模式.处理名称空间感知的属性值
作者:互联网
我的项目的一部分涉及用户定义模式文档的大量转换.我需要能够更改目标名称空间,支持类型交叉引用并在多个架构文档上构建wsdl.
最常用的操作之一是在将架构导入wsdl文件之前更改名称空间前缀.我正在使用org.xml.sax.ContentHandler,它是startPrefixMapping方法来处理名称空间.除非我想更改元素类型,否则所有方法都工作正常且无缺陷.
这是简单的架构片段
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="Param">
<sequence>
<element name="key" type="string"/>
<element name="value" type="string"/>
</sequence>
</complexType>
<!-- omitted -->
必须将其放置在wsdl中,如下所示:
<definitions xmlns:xs="http://www.w3.org/2001/XMLSchema">
<types>
<xs:schema>
<xs:complexType name="Param">
<xs:sequence>
<xs:element name="key" type="xs:string"/> <!-- 'xs:' to be added -->
<xs:element name="value" type="xs:string"/> <!-- 'xs:' to be added -->
</xs:sequence>
</xs:complexType>
<!-- omitted -->
问题在于某些模式的属性值( 是的,这是xml schema / wsdl中的主要错误.在属性值中使用xml名称空间前缀是一个巨大的错误(由于前缀值本身并不重要,因此仅是实际名称空间的占位符).不幸的是,我不知道该问题有什么好的解决方案(我不得不实现几乎相同的想法:将多个用户定义的模式合并到一个模式/ wsdl中).我确实知道xerces的值为xml schema model api,但我不知道它是否支持将多个架构合并在一起并生成结果输出. 相关文章 转载注明原文:java-XML模式.处理名称空间感知的属性值 - 代码日志
点击查看更多相关文章
解决方法:
是的,这是xml schema / wsdl中的主要错误.在属性值中使用xml名称空间前缀是一个巨大的错误(由于前缀值本身并不重要,因此仅是实际名称空间的占位符).不幸的是,我不知道该问题有什么好的解决方案(我不得不实现几乎相同的想法:将多个用户定义的模式合并到一个模式/ wsdl中).我确实知道xerces的值为xml schema model api,但我不知道它是否支持将多个架构合并在一起并生成结果输出.
标签:xsd,xml,java,xml-parsing 来源: https://codeday.me/bug/20191102/1988639.html