2012-05-23 1 views
1

Я изо всех сил пытаюсь достичь чего-то, что должно быть очень простым с помощью XSLT1.0, поэтому, пожалуйста, несите меня.Извлечь узел из xml

Это мой оригинальный XML:

< адаптер-ответ >
< статус > успех </статус >
< данные >
< инвентаризации >
< серверы >
....
....
</серверы >
< маршрутизаторы >
....
....
</маршрутизаторы >
...
...
</инвентарь >
</адаптер-ответ >

Его огромный XML с большим количеством данных. Я просто хочу разделить теги, связанные с адаптером, и сохранить данные инвентаризации с исходными тегами. Таким образом, окончательный XML будет:

< инвентаризации >
< серверы >
....
....
</серверы >
< маршрутизаторы >
....
....
/маршрутизаторы >
...
...
</инвентарь >

Пожалуйста, помогите!

С уважением, Рахул

ответ

1

Предоставленные «эскиз» из документа XML не очень хорошо образован, так что моя реконструкция документа, может не быть один, который должен был в этом вопросе:

<adapter-response> 
    <status>success</status> 
    <data> 
     <inventory> 
      <servers> 
.... 
.... 
      </servers> 
      <routers> 
.... 
.... 
      </routers> 
... 
... 
     </inventory> 
    </data> 
</adapter-response> 

Это преобразование:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

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

<xsl:template match="*[contains(name(), 'adapter')]"> 
    <xsl:apply-templates/> 
</xsl:template> 
</xsl:stylesheet> 

копии на выходе только элементы, имя которых не содержит строки "adapter".В результате для указанного документа:

<status>success</status> 
<data> 
    <inventory> 
     <servers> 
.... 
.... 
      </servers> 
     <routers> 
.... 
.... 
      </routers> 
... 
... 
     </inventory> 
</data> 
+0

Спасибо, я использовал перепев вашего решения, чтобы исправить мои. Извините, я пропустил тег в своем вопросе. – Rahul

+0

@ Рахул: Добро пожаловать. –