Sterownik XSLT / XSL i problem przy nowej wersji IOF

0

witam
niedawno dostawca zmienil format pliku XML z IOF2.5 na IOF2.6. dotychczasowe sterowniki działały bez problemu, natomiast przy nowej wersji tak jak by sterownik nie widział danych.
przykładowy sterownik wygląda następująco:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
		<xsl:template match="/">
		<offer>
			<xsl:for-each select="offer/products/product">
			<products>
			
					<ident>
						<xsl:value-of select="@id"/>
					</ident>
					
					
					
			</products>		
			</xsl:for-each>
		</offer>
	</xsl:template>
</xsl:stylesheet>

działa prawidłowo z wersją 2.5 -> przykład

<?xml version="1.0" encoding="UTF-8"?>
<offer file_format="IOF" generated="2017-03-23 15:32:49" xmlns:iof="http://www.iai-shop.com/developers/iof.phtml" version="2.5" extensions="yes">
<products language="pol" xmlns:iaiext="http://www.iai-shop.com/developers/iof/extensions.phtml">
<product id="8" currency="PLN" code_producer="KR001 B" iaiext:code_on_card= "KR001 B" iaiext:producer_code_standard="OTHER" iaiext:vat="23.0"><producer id="1487673653" name="SK DESIGN"/>
<category id="1214553914" xml:lang="pol" name="KRZESŁO"/>
<unit id="0" xml:lang="pol" name="szt."/>
<series id="4" xml:lang="pol" name="KR001 LOUIS"/>
</product>
</products>
</offer>

natomiast przy wersji 2.6 już nie chce wyciągać danych ->

<?xml version="1.0" encoding="utf-8"?>
<offer file_format="IOF" version="2.6" generated="2017-04-23 02:54:36" extensions="yes" xmlns="http://www.iai-shop.com/developers/iof.phtml">
	<products xmlns:iaiext="http://www.iai-shop.com/developers/iof/extensions.phtml" language="pol" currency="PLN">
		<product id="15" vat="23.0" producer_code_standard="OTHER" code_on_card="KR009">
			<producer id="1487673653" name="SK DESIGN"/>
			<category id="1214553914" name="KRZESŁO"/>
</product>
	</products>
</offer>

zwracam się do forumowiczów z wielką prośbą o pomoc w rozwiązaniu problemu. nie uśmiecha mi się ręczna robota na 3 tys pozycji.

0

Problem polega na tym, że wersja 2.6 dodaje domyślną przestrzeń nazw bez prefixu, więc musisz dodać ją w swoim xsl i odwoływać się w wyrażeniach xpatx już z znią:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:iof="http://www.iai-shop.com/developers/iof.phtml" 
>
        <xsl:template match="/">
			<offer>
				<xsl:for-each select="iof:offer/iof:products/iof:product" >
					<products>

							<ident>
								<xsl:value-of select="@id"/>
							</ident>

					</products>     
				</xsl:for-each>
			</offer>
		</xsl:template>
</xsl:stylesheet>
0

zaj...... - działa.

wielkie dzięki za pomoc.
muszę gdzieś dobrą dokumentację do tego złapać.

pozdrawiam...

0
Panczo napisał(a):

Problem polega na tym, że wersja 2.6 dodaje domyślną przestrzeń nazw bez prefixu, więc musisz dodać ją w swoim xsl i odwoływać się w wyrażeniach xpatx już z znią:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:iof="http://www.iai-shop.com/developers/iof.phtml" 
>
        <xsl:template match="/">
			<offer>
				<xsl:for-each select="iof:offer/iof:products/iof:product" >
					<products>

							<ident>
								<xsl:value-of select="@id"/>
							</ident>

					</products>     
				</xsl:for-each>
			</offer>
		</xsl:template>
</xsl:stylesheet>

Jak wyświetlić producenta?
Chciałem zawięzić dane do konkretnego producenta i plik jest pusty.

<offer>
				<xsl:for-each select="/offer/products/*[producer/@id='1234']" >

1 użytkowników online, w tym zalogowanych: 0, gości: 1