根据Where to put copyright information in an XSD?,在xsd中放置版权声明的一种方法是插入类似
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:appinfo>
<copyright-notice>
Copyright 2015 Example.com. All rights reserved.
<copyright-notice>
<license uri="http://www.apache.org/licenses/LICENSE-2.0"
version="2.0">Apache License, Version 2.0</license>
<!-- ... -->
</xsd:appinfo>
</xsd:annotation>
<!-- ... -->
</xs:schema>
如果我这样做,那确实可以。
但是现在,我想在相应的XML中插入类似内容:
<MyCase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="MyCaseDefinition.xsd">
<annotation>
<appinfo>
<copyright-notice>
Copyright 2015 Example.com. All rights reserved.
</copyright-notice>
<license uri="http://www.apache.org/licenses/LICENSE-2.0"
version="2.0">Apache License, Version 2.0</license>
</appinfo>
</annotation>
<!-- ... -->
</MyCase>
但是,如果这样做,我会得到一个错误:
以元素“ annotation”开头的无效内容
加载文件时
似乎上面的2个是排他的:
如何获得两个文件的版权声明?
答案 0 :(得分:0)
我认为您只是忘了一个斜杠来关闭COPYRIGHT-NOTICE标签: 尝试请
</copyright-notice>
代替第二个
<copyright-notice>
在您的xsd文件中标记。
您怎么看?
答案 1 :(得分:0)
似乎上面的2个是排他的:
- 如果将注释放在XSD中,那么我就不能在XML中放置相应内容。
- 如果我没有在XSD中放置任何内容,那么XML中的注释就可以了。
没有这种耦合:
您可以将您或您的工具想要的任何XML元素放入XSD的xsd:annotation/xsd:appinfo
元素中。
如果希望对XML中的任何元素允许使用不同的XML内容模型,则必须调整为XSD中的此类元素指定的内容模型。
如何获得两个文件的版权声明?
要允许copyright-notice
作为MyCase
的子代,请将其添加到XSD中的MyCase
的内容模型中。无论有没有显示的xsd:annotation/xsd:appinfo
传统,您都可以这样做。 (可能不希望这样做,因为在创建XML时无需遵循向XSD添加xsd:annotation/xsd:appinfo
元素的要求。)