|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
Доброго времени суток. Гугление не помогло, может не по тем ключевым словам ищу гуглю. В качестве обучающего материала использую книгу "XSLT" Дуг Тидуэлл Есть входной файл (создается программно): Код: xml 1. 2. 3. 4. 5. 6.
Есть таблица с двумя шаблонами: Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
На выходе, естественно, получается: Код: xml 1. 2. 3. 4. 5. 6.
Собственно вопрос: как исключить из файла пустые строки? Т.е. мне нужно получить: Код: xml 1. 2. 3. 4. 5.
В вышеупомянутой книге приводится фраза "Если вы захотите удалить эти пропуски, измените таблицу стилей". Но как ее изменить не уточняется. <xsl:strip-space /> убирает все пропуски и "лепит" весь файл в одну строку. Пробовал видоизменить шаблоны, тогда строки "лепятся" в одну внутри родительского элемента (element1) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 13:57 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
AversСобственно вопрос: как исключить из файла пустые строки?Забейте. На структуру и данные это влияние не оказывает, а смотреть на XML через блокнот - это нонсенс ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 18:38 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
Avers<xsl:strip-space /> убирает все пропуски и "лепит" весь файл в одну строку. Пробовал видоизменить шаблоны, тогда строки "лепятся" в одну внутри родительского элемента (element1) Ну вроде как и есть решение проблемы <xsl:output indent="yes"/> - должно всё сделать красиво Код: xml 1. 2. 3. 4. 5. 6. 7.
должно сработать.... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 21:06 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
_Vasilisk_, Собственно да, на семантическом уровне наличие/отсутствие пустых строк не меняет сути (если они не внутри элементов со смешанным содержимым). Но: 1) когда речь идет о файле размером в десятки тысяч строк и более трети из них пустые - это уже сказывается на размере файла; 2) если есть хотя бы малая вероятность того, что XML придется править в "полевых" условиях, целесообразно задуматься о читаемости/отступах/именовании тегов; 3) да и просто хочется получить файл визуально не хуже исходного :) Фридрих, <xsl:output indent="yes"/> без <xsl:strip-space elements="*" /> не оказывает влияния на выходной документ, в сочетании же с <xsl:strip-space elements="*" /> получается что-то вроде: Код: xml 1. 2. 3. 4. 5.
тоже не совсем то, что хотелось бы получить. Пустых строк нет, но отступы отсутствуют как таковые, только переносы строк. Спасибо за ответы. Похоже, что кротчайший путь к решению моей проблемы - добавить после преобразования XSLT вторую обработку, стороннюю с удалением пустых строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2017, 09:29 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
Avers, а ты каким процессором пользуешься? и каким редактором открываешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2017, 10:56 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
Фридрих, Тестовые таблицы XSLT делаю в NetBeans и какой там процессор - понятия не имею (все работает "из коробки"). А файлы открываю либо все тем же NetBeans либо во встроенном в far редакторе. В NetBeans исключительно пишутся схемы и таблицы, вручную применяются. А продакшн версия встраивается в приложение, написанное на C# (там уже VS2013/VS2017). пробовал в "xsl:stylesheet" менять свойство version="2.0" между 1.0 и 2.0 - разницы не увидел. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2017, 11:32 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
Avers, пробуй сделать преобразование в другом редакторе.... http://xml-copy-editor.sourceforge.net/ а если файл очень большой и процесор будет падать, то надо делать на XQuery http://basex.org/ ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2017, 12:24 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
Avers1) когда речь идет о файле размером в десятки тысяч строк и более трети из них пустые - это уже сказывается на размере файла;zip Avers2) если есть хотя бы малая вероятность того, что XML придется править в "полевых" условиях, целесообразно задуматься о читаемости/отступах/именовании тегов;Вы doc файлы тоже в блокноте редактируете? Avers3) да и просто хочется получить файл визуально не хуже исходного :)Опять 25. Данные и отображение данных это принципиально разные понятия ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2017, 19:46 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
Фридрих, Спасибо за ссылки, обязательно попробую. К сожалению, в моем случае это не решит главной проблемы. Упаковываю все в недра ПО, писанного на C#, даже при <xsl:output indent="yes"/> в сочетании с <xsl:strip-space elements="*" /> дает что-то вроде: Код: xml 1.
Занятно, что даже переносов строк нет. Отличие от предыдущего процессора очевидно, но, увы, не в ту сторону, что нужно. :( Похоже и правда проще обработать xml как текст (кротчайший путь к цели). _Vasilisk_, _Vasilisk_Avers1) когда речь идет о файле размером в десятки тысяч строк и более трети из них пустые - это уже сказывается на размере файла;zip Вероятно, вы не обратили внимание на мое сообщение ранее. Это преобразование будет находиться внутри ПО, тащить туда zip большого смысла нет. К тому же опыт показывает, что даже сжатие zip не убирает разницу в размерах файлов/архивов. Файл (а также архив с файлом) с пустыми строками (а если быть точным со строками с лишними пробелами и переносом строки) все равно больше, чем аналогичный без лишнего мусора. _Vasilisk_Avers2) если есть хотя бы малая вероятность того, что XML придется править в "полевых" условиях, целесообразно задуматься о читаемости/отступах/именовании тегов;Вы doc файлы тоже в блокноте редактируете? Если надо будет, файл редактируется и блокнотом и vi и чем угодно, что есть под рукой. Только doc - староват, хотя бы docx :) _Vasilisk_Avers3) да и просто хочется получить файл визуально не хуже исходного :)Опять 25. Данные и отображение данных это принципиально разные понятия Вероятно вы не заметили, в ответе выше я согласился с вами про разницу между отображением и содержанием. А также, прошу обратить внимание, что в посте речь идет именно о наличии мусора (который удобнее и нагляднее продемонстрировать именно на отображении файла), а не о панике в связи с редактированием xml файлов в блокноте (как вы могли подумать). Как я понимаю, кроме рекомендации "забить" (надо сказать, не худший совет) по существу проблемы добавить вам нечего. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2017, 18:25 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
Avers, Код: xml 1.
попробуй полностью прописать выходные данные, может сработает!? Отпишись... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 03:23 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
AversУпаковываю все в недра ПО, писанного на C#, даже при <xsl:output indent="yes"/> в сочетании с <xsl:strip-space elements="*" /> дает что-то вроде: Код: xml 1.
Занятно, что даже переносов строк нет. Потому что в ПО, писанном на C#, xml форматирует XmlWriter, а настройки форматирования задаются посредством XmlWriterSetings. В данном случае в них нужно задать значения свойств Indent = true, IndentChars = "\t" (например). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 06:23 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
Фридрих, Не помогло в случае ПО, на отдельных процессорах проверю, как будет свободная минутка или след. задача, связанная с XSLT. Спасибо за помощь! и за ссылки! Сон Веры Павловны, Спасибо! Помогло! Именно для ПО писанного на C# оказалось достаточным настроить XmlWriterSettings. Получилась конфетка/персик! Вывод : гораздо проще проблема решается программно на уровне конкретного используемого языка, библиотек. Управлять форматированием на уровне XSLT оказалось сложнее, чем я мог себе представить. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 10:57 |
|
Неполное копирование XML (пропуски в выходном файле)
|
|||
---|---|---|---|
#18+
Фридрих, Сон Веры Павловны, Следует уточнить. Сработало сочетание: Код: xml 1. 2.
и параметров XmlWriterSettings ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 11:21 |
|
|
start [/forum/topic.php?fid=14&msg=39504449&tid=1332019]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 241ms |
total: | 375ms |
0 / 0 |