2015-06-01 120 views
0

我嘗試使用XSLT處理器在PHP中轉換xml文檔,但是我無法選擇任何東西......我認爲這是一個命名空間問題。如果我從一個乾淨的<products>開始,那麼這個轉換就是正確的。XSLT轉換,錯誤的命名空間

的inputxml:

<?xml version="1.0" encoding="utf-8"?> 
<products xmlns="http://***.net/schemata/base" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://***.net/schemata/base/products.xsd"> 
    <product ean="4260094730238" eol="false" model="1090017" status="true"> 
     <ean>4260094730238</ean> 
     <eol>false</eol> 
     <group>screens</group> 
     <model>1090017</model>  
     <status>true</status> 
    </product> 
</products> 

的XSL-文件:

<?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" encoding="UTF-8" indent="yes"/> 
    <xsl:template match="/"> 
     <ARTICLE> 
      <SUPPLIER_AID> 
       <xsl:value-of select="products/product/ean" /> 
      </SUPPLIER_AID> 
     </ARTICLE> 
    </xsl:template> 
</xsl:stylesheet> 

我不能改變inputfile中,因爲它是由一個其他PROGRAMM生成。

安德烈

回答

1

更改您的XSLT使用默認的命名空間輸入XML,像這樣:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:my="http://***.net/schemata/base" exclude-result-prefixes="my"> 
    <xsl:output method="xml" encoding="UTF-8" indent="yes"/> 
    <xsl:template match="/"> 
    <ARTICLE> 
     <SUPPLIER_AID> 
      <xsl:value-of select="my:products/my:product/my:ean" /> 
     </SUPPLIER_AID> 
    </ARTICLE> 
    </xsl:template> 
</xsl:stylesheet> 
+0

感謝。對我來說很完美。 – Andre