xst:type改变所处理的元素还是只改变所提供数据的类型值?



在XML中存在元素和属性。有一个特殊的属性叫做xsi:type。我可以在与其所在的元素相同的名称空间内声明xsi:tpye值吗?使用实例:

元素例子

<dcterms:dateCopyrighted>2022</dcterms:dateCopyrighted>

问题:以下是有效的吗?

<dcterms:dateCopyrighted xsi:type:="dcterms:W3CDTF">2012-11-11</dcterms:dateCopyrighted>

请帮助我更好地理解问题代码中发生了什么。dcterms:dateCopyrighted的整个声明是否被dcterms:W3CDTF取代,从而影响元素值的类型,因此处理遵循dcterms:W3CDTF的规则,或者只是数据的唯一类型值被改变(而不是实际的元素)?例如,让我们假设dcterms:dateCopyrighted的预期值是一个文字,而dcterms:W3CDTF的类型是非文字(要清楚,这些Dublin Core元素不是这种情况)。那么,在这种情况下,元素会被替换,然后改变值的类型,还是元素保持不变,只是改变值的类型?

我发现这里的类型表很有用。在我的具体情况下,我正在处理两种不同的complextype。

在没有xsi:type的情况下,模式处理器将通过查看模式中元素dcterms:dateCopyrighted的声明来决定验证dcterms:dateCopyrighted的类型。您可以使用xsi:type指定一个更具体的类型来进行验证:该类型必须是从原本使用的类型派生出来的(通过扩展或限制)。

在你的问题中,我不确定你所说的"字面意义"是什么意思。和"非文字",但您不能使用xsi:type来绕过无论如何都会发生的验证,您只能使用它来定义数据必须满足的附加约束。

最新更新