首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外部脚本可以在Schematron规则中使用吗?

外部脚本可以在Schematron规则中使用吗?
EN

Stack Overflow用户
提问于 2013-12-13 18:42:55
回答 1查看 231关注 0票数 4

是否有方法在Schematron规则文件中调用Javascript函数?

我很确定引擎会从其中获取规则文件并生成XSLT,但我想知道是否可以在最终将在XSLT中结束的规则文件中包含脚本?

除其他外,对于涉及大量字符串解析的验证规则也很有用,如下所示:

代码语言:javascript
复制
<rule context="nar:versionCreated">
  <assert test="string-length(translate(substring(.,1, 1), '12','')) = 0">versionCreated is an iso date/time (r20a1).</assert>
  <assert test="string-length(translate(substring(.,2, 3), '0123456789','')) = 0">versionCreated is an iso date/time (r20a2).</assert>
  <assert test="substring(.,5, 1) = '-'">versionCreated is an iso date/time (r20a3).</assert>
  <assert test="string-length(translate(substring(.,6, 1), '01','')) = 0">versionCreated is an iso date/time (r20a4).</assert>
  <assert test="string-length(translate(substring(.,7, 1), '0123456789','')) = 0">versionCreated is an iso date/time (r20a5).</assert>
  <assert test="substring(.,8, 1) = '-'">versionCreated is an iso date/time (r20a6).</assert>
  <assert test="string-length(translate(substring(.,9, 1), '0123','')) = 0">versionCreated is an iso date/time (r20a7).</assert>
  <assert test="string-length(translate(substring(.,10, 1), '0123456789','')) = 0">versionCreated is an iso date/time (r20a8).</assert>
  <assert test="substring(.,11, 1) = 'T'">versionCreated is an iso date/time (r20a9).</assert>
  <assert test="string-length(translate(substring(.,12, 1), '012','')) = 0">versionCreated is an iso date/time (r20a10).</assert>
  <assert test="string-length(translate(substring(.,13, 1), '0123456789','')) = 0">versionCreated is an iso date/time (r20a11).</assert>
  <assert test="substring(.,14, 1) = ':'">versionCreated is an iso date/time (r20a12).</assert>
  <assert test="string-length(translate(substring(.,15, 1), '012345','')) = 0">versionCreated is an iso date/time (r20a13).</assert>
  <assert test="string-length(translate(substring(.,16, 1), '0123456789','')) = 0">versionCreated is an iso date/time (r20a14).</assert>
  <assert test="substring(.,17, 1) = ':'">versionCreated is an iso date/time (r20a15).</assert>
  <assert test="string-length(translate(substring(.,18, 1), '012345','')) = 0">versionCreated is an iso date/time (r20a16).</assert>
  <assert test="string-length(translate(substring(.,19, 1), '0123456789','')) = 0">versionCreated is an iso date/time (r20a17).</assert>
  <assert test="substring(.,20, 1) = 'Z' or substring(.,20, 1) = '+' or substring(.,20, 1) = '-'">versionCreated is an iso date/time (r20a18).</assert>
  <assert test="string-length(translate(substring(.,21, 1), '012345','')) = 0">versionCreated is an iso date/time (r20a19).</assert>
  <assert test="string-length(translate(substring(.,22, 1), '0123456789','')) = 0">versionCreated is an iso date/time (r20a20).</assert>
  <assert test="substring(.,23, 1) = ':' or substring(.,23, 1) = ''">versionCreated is an iso date/time (r20a21).</assert>
  <assert test="string-length(translate(substring(.,24, 1), '012345','')) = 0">versionCreated is an iso date/time (r20a22).</assert>
  <assert test="string-length(translate(substring(.,25, 1), '0123456789','')) = 0">versionCreated is an iso date/time (r20a23).</assert>
</rule>

把它变成这样:

代码语言:javascript
复制
<rule context="nar:versionCreated">
  <assert test="jscript:IsISOFormattedDateTime(.)">versionCreated is not a properly formatted date/time.</assert>
</rule>

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 20:36:55

我相信你在找抽象模式。它不是脚本,但您可以重用模式。

另外,我发现了这个问题格式化日期(Sharepoint设计器),所以您可以尝试从sharepoint中提取模式并在模式中重用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20573741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档