<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.0.6603.0">
<TITLE>Filter Content with  xml:lang</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp; Hi all,</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; I am wondering what is the best way to filter out the content of a complex document based on xml:lang.&nbsp; Basically for each language&nbsp; I want to filter out all elements that match given xml:lang attribute and those that do not have an xml:lang attribute.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">Sample xml:</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">Metadata</FONT><FONT COLOR="#FF0000" SIZE=2 FACE="Arial"> xmlns</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">=&quot;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial"><A HREF="http://www.sampleNS.com">http://www.sampleNS.com</A></FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&quot;&gt;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">RecordInfo</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">Format</FONT><FONT COLOR="#FF0000" SIZE=2 FACE="Arial"> xml:lang</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">=&quot;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial">en</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&quot;&gt;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial">StringEN</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;/</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">commonFormat</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">Format</FONT><FONT COLOR="#FF0000" SIZE=2 FACE="Arial"> xml:lang</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">=&quot;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial">fr</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&quot;&gt;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial">StringFR</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;/</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">commonFormat</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">Format</FONT><FONT COLOR="#FF0000" SIZE=2 FACE="Arial"> xml:lang</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">=&quot;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial">en</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&quot;&gt;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial">StringEN</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;/</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">commonFormat</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">Format</FONT><FONT COLOR="#FF0000" SIZE=2 FACE="Arial"> xml:lang</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">=&quot;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial">fr</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&quot;&gt;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial">StringFR</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;/</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">commonFormat</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">commonFormatID</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial">4</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;/</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">commonFormatID</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">test</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">subtest</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT><FONT COLOR="#000000" SIZE=2 FACE="Arial">222</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;/</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">subtest</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">test</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;/</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">RecordInfo</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&lt;/</FONT><FONT COLOR="#800000" SIZE=2 FACE="Arial">Metadata</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&gt;</FONT>
</P>

<P><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">Here is the code that is almost working accept that I when I get the value of the root element and</FONT> <FONT COLOR="#800000" SIZE=2 FACE="Arial">RecordInfo</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Arial"> it give me all the content.</FONT></P>

<P><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">Any help would be greatly appreciated. Thanks</FONT>
</P>

<P><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] sLang = {&quot;en&quot;,&quot;fr&quot;};</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int t = 0; t &lt; sLang.length; t++) {</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator&nbsp; itr = doc.getDescendants(new ElementFilter(myNS));</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (itr.hasNext()) {</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element oTemp = (Element) itr.next();</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(oTemp.getAttribute(&quot;lang&quot;,xmlNS) != null){</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String attr = oTemp.getAttribute(&quot;lang&quot;,xmlNS).getValue();</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(attr.equalsIgnoreCase(sLang[t])){</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(oTemp.getValue());</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(oTemp.getValue());</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
</P>

</BODY>
</HTML>