首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSD取代群n:m映射/多重替换群

XSD取代群n:m映射/多重替换群
EN

Stack Overflow用户
提问于 2014-09-01 11:07:24
回答 1查看 426关注 0票数 0

我正在开发通过XML可配置并可用PowerShell模块扩展的构建工具。我有一个XSD (http://download.crawler-lib.net/BuildTools/BuildConfig.xsd),它描述开箱即用的功能。正如前一个问题(Extending XML Schema xs:choice)中所建议的,我希望使用替换组以可扩展的方式映射我的工具。但现在我遇到了一个问题:有些工具只在某些地方有效。如何以可扩展的方式限制或映射工具到元素?

硬编码,我会使用<xs:choice>来定义某些地方的工具。例如构建工具:

代码语言:javascript
复制
   <xs:choice maxOccurs="unbounded" minOccurs="0">
    <xs:element ref="bt:AppendText"/>
    <xs:element ref="bt:Autover"/>
    <xs:element ref="bt:Call"/>
    <xs:element ref="bt:CopyFile"/>
    <xs:element ref="bt:Download"/>
    <xs:element ref="bt:DumpContext"/>
    <xs:element ref="bt:FxCop"/>
    <xs:element ref="bt:IntelliLock"/>
    <xs:element ref="bt:MSBuild"/>
    <xs:element ref="bt:NuGetPack"/>
    <xs:element ref="bt:NuGetPush"/>
    <xs:element ref="bt:NUnit"/>
    <xs:element ref="bt:NuSpecUpdate"/>
    <xs:element ref="bt:Powershell"/>
    <xs:element ref="bt:RemoveFile"/>
    <xs:element ref="bt:Upload"/>
    <xs:element ref="bt:VerifyFile"/>
    <xs:element ref="bt:Xslt"/>
    <xs:element ref="bt:Zip"/>
  </xs:choice>

全权证书工具:

代码语言:javascript
复制
   <xs:choice maxOccurs="unbounded" minOccurs="0">
   <xs:element ref="bt:Powershell"/>
    <xs:element ref="bt:File"/>
    <xs:element ref="bt:Plain"/>
  </xs:choice>

有一个共同的Powershell工具。否则,使用替换组就没有问题了。因此,我不知道如何以可重用的方式映射这些元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-01 13:09:22

在XSD1.0中,替换组形成层次结构,因此只有在允许在不同地方使用的一组工具只是嵌套的情况下,这才能起作用。在XSD1.1中,元素可以属于多个赤贫组,因此您可以(如果有意义的话)将每个这样的集合映射到替换组(通常以抽象元素作为其头),并为每个替换组专门定义成员资格。但是,只有在这种安排有一些自然的语义的情况下,我才会倾向于这样做,即如果工具表单集可以以对用户有意义的方式描述的话。

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

https://stackoverflow.com/questions/25604461

复制
相关文章

相似问题

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