2016-08-25 2 views
0

Я ищу модифицировать тождественное преобразование, чтобы пропустить элементы, где любой из атрибута является пустым, например: копия <anyElement anyAttr1="a" anyAttr2="b"/> но не копировать <anotherElement anotherAttr1="a" anotherAttr2=""/>XSL 1,0: преобразование идентичности, которая пропускает элементы, где атрибут пуст

Примечания:

  1. Не имеет значения, имеет ли элемент детей или нет.

  2. элементы без каких-либо признаков на всех (элементов контейнеров), должны быть скопированы

Источник пример XML:

<?xml version="1.0" encoding="utf-8"?> 
<Parameterset> 
    <Type Code=""/> 
    <Inventory Code="250" Index="0"/> 
    <Inventory Code="350" Index=""/> 
</Parameterset> 

Преобразованный Пример XML:

<?xml version="1.0" encoding="utf-8"?> 
<Parameterset> 
    <Inventory Code="250" Index="0"/>  
</Parameterset> 

Все, что я мог бы придумал:

<xsl:template match="node()|@*[. != '']"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

, но это только удаляет пустые атрибуты и копирует элемент.

ответ

0

Используйте <xsl:template match="*[@*[. = '']]"/> для удаления этих элементов или <xsl:template match="*[@*[. = '']]"><xsl:apply-templates></xsl:template> только для обработки их содержимого. Конечно, эти шаблоны работают вместе с шаблоном преобразования идентификаторов.

 Смежные вопросы

  • Нет связанных вопросов^_^