2010-11-24 3 views
1

I, m using Builder :: XmlMarkup для создания xml. Я хочу создать тег без содержимого, потому что api заставит меня создать это. Если я использую блогhowto get Builder для создания <tag></tag> вместо <tag/>

xml.tag do 
end 

Я получаю то, что мне нужно

<tag></tag> 

но я хочу короче

xml.mytag 

это дает мне

<mytag/> 

, но я хочу

<mytag></mytag> 

Что мне нужно передать как опция.

привет Кай

+1

Почему вы хотите `` вместо `` ? Поскольку выход XML, нисходящие приложения не должны знать или учитывать разницу. – LarsH 2010-11-24 11:48:30

ответ

2

Просто передайте пустую строку в качестве параметра. xml.mytag('')

2

Почему вы хотите <mytag></mytag> вместо <mytag/>? Поскольку выход XML, нисходящие приложения не должны знать или учитывать разницу.

Согласно Infoset спецификации (Appendix D point 7), «Различие между этими двумя формами пустого элемента: <foo/> и <foo></foo>» не представлены в XML Information Set.

Это не отвечает на ваш вопрос «как», но если вы обнаружите, что вам действительно не нужно делать то, что вы пытаетесь сделать, это может спасти вас от сложной и ненужной дикой охоты на гусей.

+2

проблема заключается в том, что Datev (крупнейший немецкий бухгалтер-системный поставщик) заставляет меня это делать. Я не думаю, что они меняют свой api для меня;) – toy 2010-11-24 12:00:46

+1

@toy: понял. Хотя это не изменило бы поведение приложения для * you * ... это было бы потому, что у них есть ошибка, так что они утверждают, что потребляют XML, но на самом деле они требуют, чтобы XML отформатировал свой путь. Кто-то должен сказать им. Также он не изменил бы свой API как таковой, если только их спецификация не говорит «короткая форма пустого элемента не допускается (или означает что-то другое)». Но я понимаю, в действительности, они не собираются исправлять это завтра! – LarsH 2010-11-24 12:06:54

1

ok пустая строка хорошая, другая однострочная пустая ячейка, которую я обнаружил.

xml.mytag{} 
Смежные вопросы