如何在XSD中定义参数行为

时间:2014-04-07 19:32:28

标签: xml xsd

我正在尝试定义以逗号分隔的数字类型匹配数字,例如111,1111111,1111,其中逗号的位置是灵活的。我想要实现的是像xsd:string {length="4"}那样,length参数将限制匹配字符串的长度。所以在我的情况下,假设我的类型被称为myNumber,参数名称为groupDigits,因此当我xsd:myNumber {groupDigits="3"}时,匹配的数字将是111,111,如果它是&#39 ; s 4匹配的数字为111,1111。如何定义此groupDigits参数?

1 个答案:

答案 0 :(得分:0)

您可以定义一个schema regular expression,它将使用逗号分隔的数字类型匹配字符串。

通常情况下,当你编写这个正则表达式时,你将被迫在写正则表达式时提交你想要的单个逗号之间的数字。

现在,如果我正确理解了这个问题,您需要根据您提供的某些输入定义一个可变的正则表达式。我不认为这是可能的,因为架构中没有用于将变量传递给正则表达式的机制。也没有从其中一个正则表达式中引用外部变量的机制。

XML模式匹配上下文无关语法,并且通过引入此变量,您将使其变为上下文相关语言,因此无法正常工作。

如果你真的,真的必须拥有这个功能,你可以考虑使用XSLT动态生成模式本身。 XSLT将是一个程序,它接受您的参数并生成正确的正则表达式。它的输出将是一次性模式,它将根据您在给定上下文中所需的模式进行验证。