2013-09-04 8 views
0

Я борюсь с некоторыми базовыми XSLT. Я хотел бы удалить элемент из некоторого XML в зависимости от того, имеет ли он определенный атрибут.XSLT Удалить элемент на основе атрибута

XML-выглядит так:

<root> 
    <Request URL="www.google.com"> 
     <id name="google"/> 
    </Request> 
    <Request URL="www.yahoo.com"> 
     <id name="yahoo"/> 
    </Request> 
</root> 

Я хотел бы, чтобы удалить элемент запроса, если URL является «www.google.com», а также для удаления элемента и, таким образом, я бы в конечном итоге со следующим:

<root> 
    <Request URL="www.yahoo.com"> 
     <id name="yahoo"/> 
    </Request> 
</root> 

у меня есть следующие до сих пор, но он не работает:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <!--identity template copies everything forward by default-->  
    <xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
    </xsl:template> 

    <!--empty template suppresses this attribute--> 
    <xsl:template match="Request[@Url='www.google.com']"/> 
</xsl:stylesheet> 

ответ

0

Ваш XML гроша rce имеет имя атрибута «URL», но вы пытаетесь сопоставить «Url».

1

Только совет: xml чувствителен к регистру. В исходном xml у вас есть URL-адрес атрибута в элементе Request. Но в xslt у вас есть @Url. Поэтому попробуйте сделать это

<xsl:template match="Request[@URL='www.google.com'] "/> 
Смежные вопросы