in reply to Parsing xml:lang attribute

try to use XSLT;
use strict; use warnings; use XML::LibXSLT; use XML::LibXML; my $LANG = 'en'; my $xslt = XML::LibXSLT->new(); my $source = XML::LibXML->load_xml (location => shift); my $style_doc = XML::LibXML->load_xml (string => do { local $/; <DATA> +}); my $stylesheet = $xslt->parse_stylesheet ($style_doc); my $results = $stylesheet->transform ($source, lang => "'$LANG'"); print $stylesheet->output_as_bytes ($results); $LANG = 'ru'; my $results = $stylesheet->transform ($source, lang => "'$LANG'"); print $stylesheet->output_as_bytes ($results); __DATA__ <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml"/> <xsl:param name="lang"/> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()[not(@xml:lang)] | node( +)[@xml:lang = $lang]"> </xsl:apply-templates> </xsl:copy> </xsl:template> </xsl:stylesheet>