2016-02-25 2 views
0

XML, я ожидал должен быть только один URL/урна (XMLNS: урна = «урна: 123: 456»), как показано ниже:Выбор между различными пространствами имен в XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" 
      xmlns:urn="urn:123:456" 
      xmlns:exsl="http://exslt.org/common" 
      extension-element-prefixes="exsl" exclude-result-prefixes="urn"> 

При использовании с ниже имен это нормально:

<Document xmlns="123:456" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

Но в последнее время я получаю другой документ с такой же структурой, как и прежде, единственным отличием является пространством имен, как показано ниже:

<Document xmlns="789:123" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

Мой вопрос, есть ли способ, что я могу поддержать как в том же файле XSLT

Ниже приведен пример моего файла XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" 
       xmlns:urn="urn:123:456" 
       xmlns:exsl="http://exslt.org/common" 
       extension-element-prefixes="exsl" exclude-result-prefixes="urn"> 

    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="/urn:Document"> 
    <Profiles> 
     <xsl:apply-templates select="*"/> 
    </Profiles> 
    </xsl:template> 

    <xsl:template match="urn:File"> 
    <File> 
     <FileId> 
     <xsl:value-of select="urn:Id"/> 
     </FileId> 
     <FileDate> 
     <xsl:value-of select="urn:Created"/> 
     </FileDate> 
    </File> 
    </xsl:template> 

    <xsl:template match="urn:Employee"> 
    <Information> 
     <EmpName> 
     <xsl:value-of select="urn:Personal/Name"/> 
     </EmpName> 
     <Age> 
     <xsl:value-of select="urn:Personal/Age"/> 
     </Age> 
     . 
     . 
     . 
    </Information> 
    </xsl:template> 
</xsl:stylesheet> 

ответ

1

Вы можете объявить как пространство имен, например,

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ns1="urn:123:456" 
xmlns:ns2="urn:789:123" 
exclude-result-prefixes="ns1 ns2"> 

Затем используйте выражение накидной для спичек и выбор, например:

<xsl:template match="/ns1:Document | /ns2:Document"> 
Смежные вопросы