【发布时间】:2014-10-25 14:25:59
【问题描述】:
我正在开发可通过 XML 配置并可通过 PowerShell 模块扩展的构建工具。我有一个 XSD (http://download.crawler-lib.net/BuildTools/BuildConfig.xsd),它描述了开箱即用的功能。正如上一个问题 (Extending XML Schema xs:choice) 中所建议的那样,我想使用替换组以可扩展的方式映射我的工具。但是现在我有一个问题:有些工具只在某些地方有效。如何以可扩展的方式将工具限制或映射到我的元素?
硬编码我会使用<xs:choice> 在某些地方定义工具。例如构建工具:
<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>
凭证工具:
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element ref="bt:Powershell"/>
<xs:element ref="bt:File"/>
<xs:element ref="bt:Plain"/>
</xs:choice>
拥有共同的 Powershell 工具。否则使用替换组是没有问题的。所以我不知道如何以可重用的方式映射这些元素。
【问题讨论】:
标签: xml powershell xsd substitution