Как я могу исключить элементы с XSI: Nil = «True» из преобразования?
Вопрос
У меня есть несколько файлов XML, которые недавно изменились, так что некоторые узлы теперь имеют атрибут XSI: Nil = «True». У меня есть лист стиля XSLT, который отображает XML в HTML для некоторых быстрых глазных станций данных. В настоящее время для того, чтобы сделать все легче на себе, я выделяю пространства имен из XML, прежде чем применить стиль листа. Это работало нормально до нашего последнего обновления. Теперь я получаю ошибку, потому что XSL не знает, как обрабатывать XSL: Nil = «True».
Я могу легко обновить код, поэтому я делаю замену / удаление во всех совпадениях XSL: Nil = «True» в XML, прежде чем я преобразую его, но мне было интересно, можно ли сложить лист стиля XSLT, чтобы XSI: Ниль будет игнорироваться / не привести к ошибкам преобразования, даже если в XML не включаются никакие пространства имен. Я бы предпочел делать такие вещи таким образом, потому что я могу сделать изменения на сервере сейчас, где, если я должен выдать новую веб-сборку, я должен перейти через некоторые внутренние обручи, чтобы его развернули.
После того, как я получаю работу (либо через снятие XSL: Nil's до или во время преобразования) Я обратно и выясни, почему я изначально удалил имен и исправить это.
Спасибо за любую помощь, вы можете дать мне.
Решение
Почему вы удалили пространства имен в первую очередь? XSLT позволяет контролировать, какие префиксы не должны быть введены в выходные данные, и вы можете пропустить тех xsi:nil
Хорошо в стиле.
Если нет декларации Prefix пространства имен для xsi
Префикс, XML недействителен. Таким образом, вы имеете дело с недействительным XML или у вас все еще есть некоторое декларация пространства XSI где-нибудь, и вы можете изменить XSLT, чтобы пропустить эти записи.
Если вы сделаете находку на источнику XML, действительно обязательно исправить его позже (скоро!), Потому что этот вид вещей собирается сломать шею.