Эй, у меня возникли трудности с обращением к определенному в документе атрибуту.Я использую атрибут внутри элемента, используя атрибут ref
так, как я считаю, он должен работать.Но когда я пытаюсь проверить свой тестовый XML-файл по нему, я просто получаю сообщение об ошибке, что атрибут не был определен.
Если я заменю ref
-атрибут встроенным объявлением или даже attributeGroup
, который содержит только определение атрибута, тогда он волшебным образом работает.Автозаполнение Visual Studio предлагает мне снова импортировать пространство имен с некоторым префиксом и хочет использовать этот префикс в атрибуте, хотя само пространство имен уже импортировано как пространство имен по умолчанию (и используется только одно).
Я в значительной степени свел и мои XML, и свои XSD-файлы, так что вот что осталось:
<?xml version="1.0" encoding="utf-8"?>
<foo xmlns="http://example.com/test" attr="xy" />
<!-- Visual Studio autocompletes to this, which works too:
<foo xmlns="http://example.com/test" a:attr="xy" xmlns:a="http://example.com/test" />
-->
И вот схема:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://example.com/test" targetNamespace="http://example.com/test"
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:attribute name="attr" type="xs:string" />
<xs:attributeGroup name="attrGroup">
<xs:attribute name="attr" type="xs:string" />
</xs:attributeGroup>
<xs:element name="foo">
<xs:complexType>
<xs:attribute ref="attr" />
<!-- These two examples work:
<xs:attributeGroup ref="attrGroup" />
<xs:attribute name="attr" type="xs:string" />
-->
</xs:complexType>
</xs:element>
</xs:schema>
В чем причинатакое поведение и что я могу сделать, чтобы это исправить?