1

我有一个定义如下的 XSD 元素:

<xsd:simpleType name="string1500">
    <xsd:restriction base="xsd:string">
        <xsd:maxLength value="1500" />
    </xsd:restriction>
</xsd:simpleType>

此元素在另一个 XSD 中以下列方式引用:

<xsd:element minOccurs="0" name="Description" type="bons3:string1500" />

bons3在两个 XSD 中引用相同的命名空间。)

当一个长度为 2000 个字符的字符串被传递到 XSLT 中的描述字段时,所有 2000 个字符都将被保留,即使设置了 1500 个字符的限制。我是否设置了错误的限制,或者是否有其他方法可以确保在 XSD 中该字段的最大长度为 1500 个字符?

谢谢。

4

3 回答 3

1

XSD 不会影响 XSLT 的行为。如果您想限制 XSLT 中某个值的长度,可以使用

substring(Description, 1, 1500)

当你提到它时。

于 2013-01-08T16:20:31.420 回答
1

XSLT 和 XSD 是两个不同的东西。XSLT 1.0 不关心 XSD 或任何其他 XML 模式语言。XSLT 2.0 引入了 XSD 感知扩展,您必须为此找到合适的 XSLT 处理器,这可能会阻止您处理 XML;但是,它不会自动使其生效。

于 2013-01-08T16:22:32.097 回答
0

如果您使用的是模式感知 XSLT 处理器,例如 Saxon-EE,您可以编写

<Description xsl:validation="strict">
  ...
</Description>

这将确保元素的内容对模式中描述元素声明的声明类型有效。(必须使用 xsl:import-schema 声明将模式导入样式表)。

于 2013-01-08T22:15:47.610 回答