Я разработал схему xml для анализа входящего XML-документа. Место получения получает XML-документы из 2-х каналов, один из них имеет орфографический значок в документе «Roookie» вместо «Rookie». Есть ли способ, чтобы мой существующий xsd проанализировал этот документ?Узлы в документе XML
ответ
Вам нужно будет заменить элементы в документе или изменить xsd для работы с новым форматом документа.
Просто измените свою схему, чтобы принять выбор между двумя узлами (Rookie или Roookie) вместо простого узла с именем Rookie. Оба узла имеют один и тот же тип. Конечно, если Roo (o) kie имеет сложное содержимое, вам нужно объявить сложный тип для этого содержимого, чтобы избежать дублирования всей структуры этих двух элементов.
Я объявил еще один элемент как «Roookie» в схемы. Существует специальная функция, которая проверяет входные данные обоих узлов и возвращает тот, у которого есть значение, так как из них всегда будет присутствовать в документе ... это будет работать для меня – Developer 2008-11-19 22:18:58
Вы могли бы препроцессировать неправильный файл XML, как с помощью этого простого XSL таблицы стилей:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no"/>
<xsl:template match="Roookie">
<Rookie>
<xsl:apply-templates select="@*|node()" />
</Rookie>
</xsl:template>
<xsl:template match="@*|node()" name="defaultRule">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
онил ответ здесь, чтобы изменить плохое сообщение. Xsd является контрактом и должен соблюдаться посредством отправки систем. Если у вас нет такого контроля над подающими системами, я бы предложил сделать вторую схему с новым именем и учесть ее орфографическую ошибку. Я начну изменять ваш контракт/xsd для каждой ошибки в сообщении, вы увеличите сложность и уменьшите ремонтопригодность.
Метод выбора Сергея - это то, что я собирался опубликовать сам. Любая предварительная обработка представленных документов обычно запрашивает проблемы. Я бы предложил вернуться к этому, потому что ваша схема определяет ваш интерфейс приложений, и там, где это возможно, вы должны требовать, чтобы люди соответствовали ему. – 2008-11-19 21:36:19
@David Hall - я объяснил это моему менеджеру, но мне сказали не «беспокоиться» о клиенте с такими незначительными изменениями и «иметь дело с ним» :-) – Developer 2008-11-19 22:17:16