Как добиться вложенного условного рендеринга без пустых тегов span из apex:outputPanel?

Я пытаюсь создать чистый XSL-FO со страницы VisualForce. Но xml, выходящий со страницы VisualForce, недействителен из-за пустых тегов span, которые генерируются вложенными тегами apex:outputPanel (внешний рендеринг = true, внутренний рендеринг = false). Вот конкретная страница, иллюстрирующая проблему:


    
        There is no reason for a nested apex:outputpanel to generate a span tag like this:  

        
            
        

        This breaks strict xml documents like XSL-FO.
            

На этой странице выводится следующий xml-вывод:


    There is no reason for a nested apex:outputpanel to generate a span tag like this:

    

    This breaks strict xml documents like XSL-FO.

На самом деле, я нашел неясную причину в документах:

атрибут макета apex:outputPanel — Стиль макета панели.Возможные значения включают «блок» (который создает HTML-тег div), «встроенный» (который генерирует HTML-тег span) и «none» (который не создает HTML-тег). Если не указано, это значение по умолчанию равно "none". Однако, если для макета установлено значение «none», для каждого дочернего элемента с атрибутом rendered, установленным на «false», outputPanel генерирует тег spanс идентификатором каждого дочернего элемента и установленным атрибутом стиля. на «отображать: нет». Таким образом, хотя содержимое не видно, JavaScript все равно может получить доступ к элементам через DOM ID.

Звучит полезно, если у меня тип контента html или javascript, но это нарушает мой строгий xml. Итак, вопрос: как я могу добиться вложенного условного рендеринга, избегая тегов span?

7
задан twamley 15 May 2012 в 05:17
поделиться