xsl-list
[Top] [All Lists]

Re: [xsl] collection is not working

2018-04-03 05:46:13
also wanted to say, I used Saxon-HE due to my convenience. Saxon-PE or
Saxon-EE are better to be used in a professional project. Or for that
matter Schema Aware XSLT processors from other vendors. That allows us to
use more strongly typed (among other benefits) XSLT language.

On Tue, Apr 3, 2018 at 2:50 PM, Mukul Gandhi 
gandhi(_dot_)mukul(_at_)gmail(_dot_)com <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

Hi Rahul,
   Here's something that I tried, which worked.

The XSLT stylesheet is,

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";

                         xmlns:xsi="http://www.w3.org/
2001/XMLSchema-instance"
                         exclude-result-prefixes="xsi"
                         version="2.0">

    <xsl:output method="text"/>
    <xsl:param name="DocumentsURI" />

    <xsl:template match="/">
        <xsl:text>Filename  Schema name&#xa;</xsl:text>
        <xsl:for-each select="collection(concat($
DocumentsURI,'?select=*.xml;recurse=yes;on-error=ignore'))">
            <xsl:variable name="fileName" select="base-uri()"/>
            <xsl:variable name="schemaName" select="article/@xsi:
noNamespaceSchemaLocation"/>
            <xsl:value-of select="tokenize($fileName,'/')[last()]"/>
            <xsl:text> </xsl:text>
            <xsl:value-of select="$schemaName"/>
            <xsl:text>&#xa;</xsl:text>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>

Please create a parameter to stylesheet as follows,
name:  DocumentsURI
value: file:/C:/Users/mukul/Desktop/test
(the 'value' is where, all my XML files and XSLT are kept. Please mention
location as per your local environment)

I specified the XML files as follows,
aa.xml
<?xml version="1.0" encoding="UTF-8"?>
<article xsi:noNamespaceSchemaLocation="aa.xsd" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance";>
   <name>aaas</name>
</article>

Similarly for other XML files.

After running the stylesheet I get following output,
Filename  Schema name
aa.xml aa.xsd
bb.xml bb.xsd
cc.xml cc.xsd

I used Saxon-HE 9.7.0.19, to test this.

Hope this helps.

On Mon, Apr 2, 2018 at 10:09 PM, Rahul Singh 
rahulsinghindia15(_at_)gmail(_dot_)com <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

Hi,

I have 100 xml file which contains xml data with schemalocation namespace
in root element, i have written xslt to merge file name with schema name in
one file but i am not able to generate my output :

*Input: *
*aa.xml*
<?xml version="1.0" encoding="UTF-8"?>
*<article xsi:noSchemaLocation="aa.xsd">*
<name>aaas</name>
</article>


*bb.xml*
<?xml version="1.0" encoding="UTF-8"?>
*<article xsi:noSchemaLocation="bb.xsd">*
<name>ars</name>
</article>


*cc.xml*
<?xml version="1.0" encoding="UTF-8"?>
*<article> xsi:noSchemaLocation="cc.xsd"*
<name>tytu</name>
</article>


*Expected output:*

Filename  Schema name
aa.xml      aa.xsd
bb.xml      bb.xsd
cc.xml      cc.xsd


*code:*

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1
999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format";
xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:fn="
http://www.w3.org/2005/xpath-functions";>
    <xsl:output method="xml" indent="yes"/>
    <xsl:strip-space elements="*"/>
    <xsl:param name="DocumentsURI" select="'file:/C:/Users/rahul/
Downloads/ARB/ARB'"/>
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="/">
        <!--Generating Result Docuemnt-->
        <xsl:result-document href="Merged.xml" method="xml" indent="yes">
            <Articles>
                <xsl:for-each select="collection(concat($Doc
umentsURI,'?select=*.xml;recurse=yes;on-error=ignore'))">
                    <xsl:apply-templates select="/article"/>
                </xsl:for-each>
            </Articles>
        </xsl:result-document>
    </xsl:template>
</xsl:stylesheet>
XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://-list/2709226> (by email)


XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <-list/2709226> (by
email <>)




-- 
Regards,
Mukul Gandhi
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>