XML 编组:如何将另一个名称空间中的属性添加到元素
我想生成这个 XML:
<myElement myAttribute="whateverstring" xsi:type="hardPart"/>
我有这个 XSD:
<xsd:element name="myElement">
<xsd:complexType>
<xsd:attribute name="myAttribute" type="xsd:boolean" />
<!-- need to add the xsi:attribue here -->
</xsd:complexType>
</xsd:element>
我到底如何在 XSD 中完成此操作(仅供参考:我使用它使用 JiBX 将对象编组到 Java 中的 XML 中)。
I want to generate this XML:
<myElement myAttribute="whateverstring" xsi:type="hardPart"/>
I have this XSD:
<xsd:element name="myElement">
<xsd:complexType>
<xsd:attribute name="myAttribute" type="xsd:boolean" />
<!-- need to add the xsi:attribue here -->
</xsd:complexType>
</xsd:element>
How exactly can I accomplish this in my XSD (FYI: I am using it to marshall objects into XML in Java, using JiBX).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
假设当您说 xsi:type 时,您指的是“http:// www.w3.org/2001/XMLSchema-instance”命名空间。它不是添加到 XML 模式中的东西,它是限定元素的保留方法(类似于 Java 中的强制转换)。
为了使以下内容有效:
您需要有一个 XML 模式,如下所示:
然后,当您的 XML 绑定解决方案封送与类型“hardPart”对应的对象时,它可能会将其表示为:
由于 myElement 对应于超类型“myElementType”,并且需要使用 xsi:type="hardPart" 进行限定,以表示内容实际上对应于子类型“hardPart”。
JAXB 示例
MyElementType
HardPart
演示
Assuming when you say xsi:type, you mean the "type" attribute from the "http://www.w3.org/2001/XMLSchema-instance" namespace. It is not something that you add to your XML schema, it is a reserved means of qualifying an element (similar to a cast in Java).
For the following to be valid:
You would need to have an XML schema like:
Then when your XML binding solution marshals an object corresponding to the type "hardPart" it may represent it as:
Since myElement corresponds to the super type "myElementType", and needs to be qualified with xsi:type="hardPart" to represent that the content actually corresponds to the subtype "hardPart".
JAXB Example
MyElementType
HardPart
Demo