我有一个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中的Description字段时,即使限制了1500个字符,也会保留所有2000个字符。我是否设置了限制错误,还是有另一种方法可以确保XSD中该字段的最大长度为1500个字符?
感谢。
答案 0 :(得分:1)
XSD不会影响XSLT的行为。如果您想限制XSLT中某个值的长度,可以使用
substring(Description, 1, 1500)
当你提到它时。
答案 1 :(得分:1)
XSLT和XSD是两回事。 XSLT 1.0不关心XSD或任何其他XML模式语言。 XSLT 2.0引入了一个XSD感知扩展,你必须找到一个合适的XSLT处理器,这可能会阻止你处理XML;但是,它不会自动神奇地使它有效。
答案 2 :(得分:0)
如果您使用的是架构感知的XSLT处理器,例如Saxon-EE,则可以编写
<Description xsl:validation="strict">
...
</Description>
这将确保元素的内容对模式中Description元素声明的声明类型有效。 (必须使用xsl:import-schema声明将模式导入样式表。)