У меня есть схема, которая дает мне это определение, и нигде в схеме нет ссылки на whitespace (никогда не указывается сохранение/сбой/замена на что-либо).Недопустимое значение по умолчанию для сложного типа mixed = true
<xs:element name="Content">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded"/>
</xs:complexType>
</xs:element>
Я столкнулся с каким-то кодом, который делает .trim() на строке, полученную во время синтаксического анализа этого элемента. Если это означает, что значение whiteSpace равно collapse
, то trim() будет считаться действительным, но если он подразумевает preserve
или replace
, то trim() будет ошибкой. Сторонний код в другом месте, по-видимому, обрабатывает его как preserve
, но я не уверен, что это мотивированное решение, основанное на схеме.
Удаление обрезки - это то, что мне нужно сделать, чтобы наш код соответствовал их коду, поэтому мой путь ясен, но мне стало любопытно, было ли существующее поведение технически правильным (если нет других мест в код, который может быть затронут).
Я потратил время на поиск в Google и на полчаса или около того, чтобы выбрать спецификацию схемы xml и не нашел четкого ответа, поэтому, прежде чем я потрачу гораздо больше времени, выясняю, что, вероятно, подразумевается по умолчанию на основе сочетание из 2-3 областей спецификации, я думал, что попрошу здесь в надежде, что кто-то уже отследил это, и только знает ответ. (или кому-то становится любопытно и отслеживает его для удовольствия).
Это немного сложнее, чем это. В контексте XSLT/XQuery whiteSpace изменяет введенное значение узла, который должен быть свернут/нормализован, но он не меняет строковое значение. На уровне PSVI терминология отличается, но эффект подобен. –
@MichaelKay: Я интерпретировал OP как подразумевающее, что объявление whiteSpace в XSD может повлиять на обрезку строки, созданной при разборе документа экземпляра XML. Возможно, я неправильно понял. Скажите, правда, я ошибаюсь, полагая, что это только проверка, а не поиск, на что влияет объявление whiteSpace в XSD? – kjhughes
Пространственный грань влияет на «фактическое значение» узла в PSVI. Но, конечно, большинство людей, выполняющих валидацию, интересуются только тем, действительно ли документ действителен, они не будут смотреть на другие свойства узлов PSVI. Вероятно, они, скорее всего, будут использовать PSVI, если они используют XSLT или XQuery, ориентированные на схему, и в этом случае «фактическое значение» PSVI становится «типизированным значением XDM». –