Я прав, думая, что вы хотите воспроизвести почти точную копию входного XML с добавлением объявления пространства имен xsi, которое отсутствует на входе?
Во-первых, как и сейчас, ваш ввод не является корректным XML, только из-за отсутствия объявления пространства имен xsi. Следовательно, нет возможности использовать XSLT для его добавления: любой XSLT-процессор захлестнет неровность ввода.
Во-вторых, вам нужно проверить чувствительность к регистру: в настоящее время никакие входные узлы не соответствуют выражению <xsl:for-each select="HEADER">
. Если вы измените его на "Header"
, правило шаблона действительно заменит вход <Header>
<HEADER>
, содержимое которого копируется одинаково. Но ... только если у вас есть декларации пространства имен во входном праве ...
Итак, если целью является действительно «модернизировать» не-правильно сформированный XML в хорошо сформированную версию, я бы предложил искать другие инструменты, такие как Perl, Awk, или любой другой простой поиск/замену решения, которое работает на обычном тексте и может просто добавить недостающее объявление пространства имен в документе элемент:
<Header xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<End_Date xsi:nil="true"/>
</Header>
(конечно, вы также может использовать функцию XSLT 2.0 unparsed-text($href)
, которая позволяет читать любой файл как непроверенный текст, который затем можно продолжить с помощью <xsl:analyze-string>
. См. статью Майкла Кейя Up-conversion using XSLT 2.0 для дальнейшего вдохновения. это довольно неудобный способ обработки не XML с помощью XML-инструмента, я даю это просто для полноты - если добавление префикса пространства имен является единственной проблемой, которую нужно решить, я бы определенно пошел на более дешевый вариант поиска/замены.)
Надеется, что это помогает,
Рон
Я не вижу XML вообще (без угловых скобок). Даже если у вас есть ' ', вы не можете обработать его с помощью XSLT, так как ему нужно правильно сформированное XML-пространство имен для начала и без каких-либо xmlns: xsi = "someURI", этот фрагмент не является пространство имен хорошо сформированное XML. –
Привет, я не могу добавить угловые скобки. У меня был список кода, но я не могу его показать, поскольку у меня недостаточно репутации. – Gabriel