Мне не нравится отвечать на мои собственные вопросы, но похоже, что не может быть реального решения Microsoft там. Для меня это то, как я решаю проблему в офисе, используя Visual Studio.
Это довольно много времени. Я никогда не думал об этом как о проблеме, пока не увидел, что Vault идентифицирует, что файл на диске отличается от хранилища.
Может быть, вы все можете сказать, как вы делаете генерацию / регенерацию кода при работе с репозиторием контроля версий.
Когда вы делаете расширение, модель содержимого нового типа представляет собой последовательность модели содержимого базового и что бы вы ни добавили в свой новый тип. Например, в вашем случае модель содержимого для переопределенного типа CrimeLineBusiness_Type -
<xsd:sequence>
<xsd:sequence>
<xsd:element ref="CrimeSchedule" minOccurs="0"/>
<xsd:element ref="CrimeMoneyAndSecurities" minOccurs="0"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element ref="CrimeMoneyAndSecurities" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="CrimeSchedule" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:sequence>
. Вы можете попытаться добиться того, чего хотите, - это двойное переопределение этого типа. Сначала вы переопределяете его путем ограничения, удаляя необязательные элементы CrimeSchedule и CrimeMoneyAndSecurities, а затем путем расширения снова добавляя эти элементы с желаемым количеством вхождений. См. Ниже полный рабочий пример:
text.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="test" type="CrimeLineBusiness_Type"/>
<xsd:complexType name="PCLINEBUSINESS"/>
<xsd:element name="CrimeSchedule"/>
<xsd:element name="CrimeMoneyAndSecurities"/>
<xsd:complexType name="CrimeLineBusiness_Type">
<xsd:complexContent>
<xsd:extension base="PCLINEBUSINESS">
<xsd:sequence>
<xsd:element ref="CrimeSchedule" minOccurs="0"/>
<xsd:element ref="CrimeMoneyAndSecurities" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
redef1.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:redefine schemaLocation="test.xsd">
<xs:complexType name="CrimeLineBusiness_Type">
<xs:complexContent>
<xs:restriction base="CrimeLineBusiness_Type">
<xs:sequence/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
</xs:schema>
redef2.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:redefine schemaLocation="redef1.xsd">
<xs:complexType name="CrimeLineBusiness_Type">
<xs:complexContent>
<xs:extension base="CrimeLineBusiness_Type">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="CrimeSchedule"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="CrimeMoneyAndSecurities"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
</xs:schema>
Действительный экземпляр XML, test.xml
<?xml version="1.0" encoding="UTF-8"?>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="redef2.xsd">
<CrimeSchedule></CrimeSchedule>
<CrimeSchedule></CrimeSchedule>
<CrimeMoneyAndSecurities></CrimeMoneyAndSecurities>
<CrimeMoneyAndSecurities></CrimeMoneyAndSecurities>
</test>
С уважением, Джордж