XML을 통해 구성 가능하고 PowerShell 모듈로 확장 가능한 빌드 도구를 개발 중입니다. 나는 박스 기능을 설명하는 XSD (http://download.crawler-lib.net/BuildTools/BuildConfig.xsd)를 가지고있다. 이전 질문 (Extending XML Schema xs:choice)에서 제안했듯이 대체 도구를 사용하여 내 도구를 확장 가능한 방식으로 매핑합니다. 하지만 이제는 문제가 있습니다. 일부 도구는 특정 위치에서만 유효합니다. 도구를 확장 가능하게 요소에 제한하거나 매핑하는 방법은 무엇입니까?XSD 대체 그룹 n : m 매핑/다중 대체 그룹
하드 코드 특정 위치에 도구를 정의하려면 <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>
공통의 파워 쉘 도구를 가지고있다. 그렇지 않으면 대체 그룹을 사용하는 데 아무런 문제가 없습니다. 따라서 이러한 요소를 재사용 가능한 방식으로 매핑하는 방법을 모르겠습니다.
정보를 제공해 주셔서 감사합니다. 약간 다른 접근 방식을 시도했습니다. 일반적인 도구 요소 ( )와 특정 도구를 habe하기 위해 필요한 특정 도구 요소를 정의했습니다. ( ). 그런 다음 도구를 사용해야하는 일반 요소와 특정 요소를 선택합니다. 그래서 어디서나 사용할 수있는 "일반적인"도구와 빌드 단계, 레이블, 버전 등을위한 특정 도구가 있습니다. 완전히 유연하지는 않지만 그 의미론은 저에게 효과적입니다. –