find and output

Questions about XML that are not covered by the other forums should go here.
tekno
Posts: 1

find and output

Sat Aug 01, 2015 1:14 pm

hi im new on oxygen xml editor using. i have a xml file contains 700+ items. and i want to find only specified label contains "GOO-*" text

input xml:

Code: Select all

<Urunler>
 <Urun>
  <Kod>356</Kod>
  <Baslik><![CDATA[some text in here]]></Baslik>
  <Durum>1</Durum>
  <AltBaslik><![CDATA[]]></AltBaslik>
  <barcode><![CDATA[GOO-024]]></barcode>
  <Fiyat>175.000</Fiyat>
  <ParaBirimi>TL</ParaBirimi>
  <Miktar>0</Miktar>
  <UrunOnayi><![CDATA[ yok ]]></UrunOnayi>
  <Resim><![CDATA[some text in here]]></Resim>
  <Aciklama><![CDATA[<span style="font-weight: bold;">some text in here]]></Aciklama>
  <Kategori><![CDATA[El Aletleri]]></Kategori>
 </Urun>
. . . . .
</Urunler>


i want a file with only <barcode>label contains GOO-* text
what method is easy to use for this? and how can i do

thanks
adrian
Posts: 2388

Re: find and output

Wed Aug 05, 2015 12:02 pm

HI,

You can apply this XSL stylesheet with Saxon 6.5.5 and obtain a copy of the XML that contains only the Urun entries that have a barcode with 'GOO-', the rest are filtered out.

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="1.0">
    <xsl:output method="xml" cdata-section-elements="Baslik AltBaslik barcode UrunOnayi Resim Aciklama Kategori"/>
   
    <!-- Match document -->
    <xsl:template match="/">
        <xsl:apply-templates mode="copy" select="."/>
    </xsl:template>
    <!-- Deep copy template -->
    <xsl:template match="node()|@*" mode="copy">
        <xsl:copy>
            <xsl:apply-templates mode="copy" select="@*"/>
            <xsl:apply-templates mode="copy"/>
        </xsl:copy>
    </xsl:template>
    <!-- Handle default matching -->
    <xsl:template match="*"/>
   
    <xsl:template match="Urun" mode="copy">
        <xsl:if test="contains(barcode/text(), 'GOO-')">
            <xsl:copy>
                <xsl:apply-templates mode="copy"/>
            </xsl:copy>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Regards,
Adrian
Adrian Buza
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

Return to “General XML Questions”

Who is online

Users browsing this forum: No registered users and 2 guests