Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用XSLT验证XML中的日期格式?_Xml_Xslt - Fatal编程技术网

如何使用XSLT验证XML中的日期格式?

如何使用XSLT验证XML中的日期格式?,xml,xslt,Xml,Xslt,我想验证某个日期在某些XML中的格式是否正确,例如: <Student> <Name>Test</Name> <DOB>14121992</DOB> </Student> 试验 14121992 我需要使用XSLT检查DOB是否为日期格式YYMMDD?这样做有什么功能吗?我看到很多代码只转换日期/时间,而不验证它 是否可以使用模式进行此验证?模式和XSLT 2.0都可以对照格式为YYYY-MM-DD的xs:date类型

我想验证某个日期在某些XML中的格式是否正确,例如:

<Student>
<Name>Test</Name>
<DOB>14121992</DOB>
</Student>

试验
14121992
我需要使用XSLT检查DOB是否为日期格式
YYMMDD
?这样做有什么功能吗?我看到很多代码只转换日期/时间,而不验证它


是否可以使用模式进行此验证?

模式和XSLT 2.0都可以对照格式为
YYYY-MM-DD
xs:date
类型进行检查。由于格式不同,您需要尝试从输入数据的组件构造一个
xs:date
,然后在XSLT 2.0中执行
$var castable As xs:date
。可能需要进行更多的检查以确保XML中没有其他数据,例如,在您的示例中,您有很多数字。XSLT并不真正关心验证(尽管如果文档未验证,可能会使用支持模式的处理器导致失败)。正如在另一条注释中所述,XML模式语言可以用来验证这一点,RELAXNG(带有数据类型模块)或Schematron也可以。您还可以编写一个模板,在日期与格式不匹配的情况下使用
输出消息,但您必须注意消息。