我在XSD中有这个元素:
<xs:simpleType name="elementWithAsterisks">
<xs:restriction base="xs:string">
<xs:length value="16"/>
<xs:pattern value="^[0-9*]*$"/>
</xs:restriction>
</xs:simpleType>
此元素的值可以是数字,数字和星号,其长度必须为16个字符。例如,以下字符串应该有效:
**1234567****01456**
**1234567890654321**
1***************
如果我向此元素发送类似的值,XStream将返回以下消息:
cvc-pattern-valid:值'1234567 **** 01456'与facet无效 对于'elementWithAsterisks'类型的模式'^ [0-9 *] * $'。
我正在使用Java和XStream。这是我验证它的代码:
try {
File xsdFile = new File("validation.xsd");
SchemaFactory schemaFactory = SchemaFactory.newInstance(SCHEMA_LANGUAGE);
factory.setSchema(schemaFactory.newSchema(xsdFile);
SAXParser saxParser = factory.newSAXParser();
XMLReader reader = saxParser.getXMLReader();
reader.setErrorHandler(new XmlValidationErrorHandler());
reader.parse(new InputSource(inputStream));
isValid = true;
} catch (SAXException | ParserConfigurationException | IOException ex) {
ex.printStackTrace();
isValid = false;
}
答案 0 :(得分:4)
XSD中的正则表达式由$
和xs:pattern
隐式包围。只需从 <xs:pattern value="[0-9*]*"/>
中删除明确的(冗余的),您的XSD就会按预期运行:
<target name="Minifying-Javascript_And_CSS_Files">
<echo message="Minifying Javascript and CSS Files"/>
<echo message="${env.WORKSPACE}/Resources/Minifying.sh"/>
<exec executable="/bin/sh">
<arg value="/c"/>
<arg value="${env.WORKSPACE}/Resources/Minifying.sh"/>
<arg value="-p"/>
</exec>