2017-02-22 13 views
2

У меня есть файл, как показано ниже. Мне нужно обработать файл и скопировать узлы на основе значения элемента = CT. Я как бы проиграл, как и с чего начать. Любая помощь будет оценена по достоинству.Попытка выбора узла на основе значения элемента

стилевых:

<?xml version="1.0" encoding="utf-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
    > 
     <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

     <xsl:template match="/"> 
     <feed> 
      <xsl:for-each select="web-export/run-date/pub-code/ad-type"> 
      <xsl:copy-of select="."/> 
      </xsl:for-each> 
     </feed> 
     </xsl:template> 
    </xsl:stylesheet> 

XML:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
<web-export> 
<run-date>02/01/2017 
<pub-code>News 
<ad-type>Legal Liner 
<cat-code>Legals</cat-code> 
<class-code>Legal</class-code> 
<subclass-code>Briefings</subclass-code> 
<placement-description></placement-description> 
<position-description></position-description> 
<subclass3-code></subclass3-code> 
<subclass4-code></subclass4-code> 
<order-number>0000023456</order-number> 
<FieldedDataSet> 
<State>CT</State> 
</FieldedDataSet> 
<ad-content><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque est. ]]></ad-content> 
</ad-type> 
</pub-code> 
<pub-code>News 
<ad-type>Legal Liner 
<cat-code>Legals</cat-code> 
<class-code>Legal</class-code> 
<subclass-code>Notices</subclass-code> 
<ad-number>0000</ad-number> 
<FieldedDataSet> 
<State>RI</State> 
</FieldedDataSet> 
<ad-content><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque est. ]]></ad-content> 
</ad-type> 
</pub-code> 
</run-date> 
</web-export> 

ответ

0

работал, если какой-либо из дочернего элемента имеет значение = "CT"

<xsl:template match="/"> 
    <feed> 
     <xsl:for-each select="web-export/run-date/pub-code/ad-type[descendant::FieldedDataSet/State[. = 'CT']]"> 
      <xsl:copy-of select="."/> 
     </xsl:for-each> 
    </feed> 
</xsl:template> 
+0

Привет Rupesh. Спасибо за быстрый ответ. Это работает для меня. Как настроить целевой элемент - ? Могут быть и другие элементы, содержащие строку «CT». Мне нужно убедиться, что только записи для этого элемента успешны. Спасибо., – geektampa

+0

@geektampa, я отредактировал ответ для вас, теперь он будет работать только в совпадениях. – Rupesh

+0

Спасибо. работает отлично. Это пригодится. Спасибо, что научил меня чему-то новому сегодня. – geektampa