2015-12-09 53 views
0

使用xslt 1.0 我想從匹配中排除pma:database和pma:table,我添加了exclude-result-prefixes,但它似乎沒有效果。如何從匹配中排除一個名稱空間前綴?

我不需要轉換XML的配置部分。

XML:

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
- phpMyAdmin XML Dump 
- version 4.1.7 
- http://www.phpmyadmin.net 
- 
- Host: localhost 
- Generation Time: Dic 07, 2015 alle 16:57 
- Versione del server: 5.1.71-community-log 
- PHP Version: 5.3.10 
--> 

<pma_xml_export version="1.0" xmlns:pma="http://www.phpmyadmin.net/some_doc_url/"> 
<!-- 
- Structure schemas 
--> 
<pma:structure_schemas> 
    <pma:database name="my_professioneslot" collation="latin1_swedish_ci" charset="latin1"> 
     <pma:table name="Slots"> 
      CREATE TABLE `Slots` (
       `ID` int(11) NOT NULL, 
       `IdProduttore` int(11) NOT NULL, 
       `Scheda` varchar(50) NOT NULL, 
       `NomeCommerciale` varchar(50) NOT NULL, 
       `Produttore2` int(11) NOT NULL, 
       `CodiceModello` varchar(50) NOT NULL, 
       `PercMinima` int(11) NOT NULL, 
       `Ciclo` int(11) NOT NULL, 
       PRIMARY KEY (`ID`) 
      ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 
     </pma:table> 
    </pma:database> 
</pma:structure_schemas> 

<!-- 
- Database: 'my_professioneslot' 
--> 
<database name="my_professioneslot"> 
    <!-- Tabella Slots --> 
    <table name="Slots"> 
     <column name="ID">1</column> 
     <column name="IdProduttore">1</column> 
     <column name="Scheda">GOOD LUCK ULTIMATE</column> 
     <column name="NomeCommerciale">CASINO' GOOD LUCK ULTIMATE</column> 
     <column name="Produttore2">0</column> 
     <column name="CodiceModello">776870592765183</column> 
     <column name="PercMinima">75</column> 
     <column name="Ciclo">30000</column> 
    </table> 
    <table name="Slots"> 
     <column name="ID">2</column> 
     <column name="IdProduttore">1</column> 
     <column name="Scheda">MEGA DOBLONE</column> 
     <column name="NomeCommerciale">CASINO' MEGA DOBLONE</column> 
     <column name="Produttore2">0</column> 
     <column name="CodiceModello">776870592865184</column> 
     <column name="PercMinima">75</column> 
     <column name="Ciclo">30000</column> 
    </table> 

的xsl:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:pma="http://www.phpmyadmin.net/some_doc_url/" 
exclude-result-prefixes="msxsl pma"> 
<xsl:output method="xml" indent="yes"/> 

<xsl:template match="database"> 
    <xsl:element name="produttori"> 
    <xsl:for-each select="table"> 
    <xsl:element name="produttore" > 
     <xsl:attribute name="id"> 
     <xsl:value-of select="column[@name='ID']"/> 
     </xsl:attribute> 
     <xsl:value-of select="column[@name='Descrizione']"/> 
    </xsl:element> 
    </xsl:for-each> 
    </xsl:element> 
</xsl:template> 

結果:

  CREATE TABLE `Slots` (
       `ID` int(11) NOT NULL, 
       `IdProduttore` int(11) NOT NULL, 
       `Scheda` varchar(50) NOT NULL, 
       `NomeCommerciale` varchar(50) NOT NULL, 
       `Produttore2` int(11) NOT NULL, 
       `CodiceModello` varchar(50) NOT NULL, 
       `PercMinima` int(11) NOT NULL, 
       `Ciclo` int(11) NOT NULL, 
       PRIMARY KEY (`ID`) 
      ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 





<produttori><produttore id="1"></produttore><produttore id="2"></produttore></produttori> 

回答

1

exclude-result-prefixes僅當前綴未使用時纔有用於從輸出XML中排除前綴聲明。如果你想刪除某些內容即在特定的名稱空間的元素,你可以使用匹配這樣的元素是空的模板,例如:

<xsl:template match="pma:*"/> 

上述很好地去除命名空間中的所有元素,通過前綴引用pma

相關問題