Спасибо, Петру Гардя , за упоминание нашего инструмента
DocFlex / XML XSDDoc !
Да, действительно, используя нашу документацию XML-схемы, можно задокументировать все эти примеры XML-схем, упомянутых в первоначальном вопросе.
Вот такой документ, который я только что сгенерировал:
http://www.filigris.com/pr/stackoverflow.com/questions/8369677/using-xslt-to-transform-multiple-xml-schema-documents/xsddoc/
Но я должен сказать, что предоставленные списки XSD несколько неверны. Если вы воспринимаете эти тексты буквально и создаете из них соответствующие XSD-файлы, ничего не получится! (Для создания документа мне нужно было их исправить.)
Во-первых, разметка XML в некоторых схемах просто недопустима (например, в Application.xsd).
Во-вторых, FooApplication.xsd использует неправильные ссылки на типы.
Он определяет элементы «FooInput» и «FooOutput» с типами «FooClient» и «FooServer» соответственно.
Эти типы определены в FooClient.xsd и FooServer.xsd, которые включены в FooApplication.xsd. Все в порядке.
Чего здесь не хватает, так это того, что эти типы определены в пространстве имен: "http://www.example.com/foo". Но местоположения XML в FooApplication.xsd, где они используются, связаны с другим пространством имен - по умолчанию (т.е. без пространства имен ). Итак, декларация:
<xsd:element name="FooInput" type="FooClient"/>
фактически не относится к типу:
{http://www.example.com/foo}:FooClient
а точнее к типу:
{no namespace}:FooClient
Чтобы ссылки на типы были правильными, вам нужно добавить еще одну привязку пространства имен в в FooApplication.xsd:
<xsd:schema targetNamespace="http://www.example.com/foo"
xmlns="http://www.example.com/foo"
xmlns:core="http://www.example.com/core"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
или используйте дополнительный префикс пространства имен, связанный с "http://www.example.com/foo".
Итак, если вы когда-либо пытались документировать исходные схемы напрямую с помощью нашего инструмента DocFlex / XML XSDDoc , очевидно, что вы не получили бы правильной документации!
(Наша XML-схема doc-gen не проверяет какую-либо XML-схему автоматически. Она просто не может этого сделать, потому что, во-первых, это не ее работа, а во-вторых, любая проверка схемы потребует дополнительного времени обработки, что может раздражать большинство кто уверен, что их схемы верны. В конце концов, вы всегда можете добавить дополнительный шаг проверки схемы в свой файл сборки)
Наконец , если все вышеперечисленное не касается вас - то есть все эти ошибки в примерах схем - просто неточности этого конкретного вопроса - тогда было бы действительно интересно узнать, почему наши инструмент не подходит для вашей задачи (кроме коммерческих, финансовых или организационных вопросов).
Петру Гардея предположил, что наше решение может быть «расширено». Но в каком направлении, вообще, может быть необходимо увеличить его? Это было бы действительно интересно услышать! Потому что это наша собственная задача - как сделать наш инструмент документирующим схемы XML еще лучше.
приписка
На этом сайте есть еще один вопрос, который также очень связан с этой темой:
Как преобразовать xsd в удобочитаемую документацию?
Я также предоставил ответ (хотя некоторые могут считать его спорным, особенно с точки зрения мейнстрима). К сожалению, к тому времени у меня не было этой учетной записи, поэтому я не могу напрямую к ней относиться.