2015-12-09 1 views
0

using xslt 1.0 Я хочу exlude pma: database и pma: table from matching, я добавил префиксы exclude-result-префиксы, но, похоже, это не имеет никакого эффекта.Как исключить один префикс пространства имен из соответствия?

Мне не нужно преобразовывать раздел конфигурации 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

Смежные вопросы