Hallo Forum,
frohes neues Jahr Euch allen. Ich stehe gerade vor einem merkwürdigen Problem. Ich verarbeite eine XML Dokument mit einem XSL-Stylesheet und rufe darin während der Verarbeitung ein weiteres XML-Dokument auf, auf welches Attribute aus dem ersten XML verweisen. Ich setze dies zweifach ein, aber leider funktioniert es nur im ersten Fall.
Hier einmal der relevante Auszug aus dem Haupt-XML:
In der includierten XML steht dann bspw. folgendes:
Ich will also in dem Fall das eine Farbe im Haupt-XML gewählt wird, auf die andere XML zugreifen und die Farbwerte in CMYK oder RGB abgreifen. Dazu steht mir XSL 1.0 (bei PHP) zur Verfügung:
Für CMYK werden die Werte dann in RGB umgerechnet, für RGB einfach ausgelesen. Komischerweise verarbeitet XSLT das ChooseWhen noch richtig, erst bei value-of steigt das Skript aus???
Danke für jede Hilfe.
Gruss
Dom
frohes neues Jahr Euch allen. Ich stehe gerade vor einem merkwürdigen Problem. Ich verarbeite eine XML Dokument mit einem XSL-Stylesheet und rufe darin während der Verarbeitung ein weiteres XML-Dokument auf, auf welches Attribute aus dem ersten XML verweisen. Ich setze dies zweifach ein, aber leider funktioniert es nur im ersten Fall.
Hier einmal der relevante Auszug aus dem Haupt-XML:
Code:
<idPkg:Spread> <Spread> <Rectangle FillColor="Color/ucc" /> </Spread> </idPkg:Spread>
Code:
<Color Self="Color/ucc" Model="Process" Space="CMYK" ColorValue="0 0 0 0" /><!-- hier ist die @FillColor von oben als CMYK definiert --> <Color Self="Color/u105" Model="Process" Space="CMYK" ColorValue="0 0 0 85" /> <Color Self="Color/u10a" Model="Process" Space="RGB" ColorValue="255 79 13" /> <Color Self="Color/u10b" Model="Process" Space="CMYK" ColorValue="0 0 45 12" />
Code:
<xsl:variable name="colorValuesFile"> <xsl:text>../idml/</xsl:text> <xsl:value-of select="$idmlBaseID"/> <xsl:text>/idml/Resources/Graphic.xml</xsl:text> </xsl:variable> <xsl:variable name="fillColorName"> <xsl:value-of select="@FillColor" /> </xsl:variable> <xsl:variable name="fillColor"> <xsl:choose> <xsl:when test="document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@Space = 'CMYK'"> <red> <xsl:value-of select="format-number(( 1 - ( (substring-before(substring-after(document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'C='),' ') div 100) * ( 1 - (substring-after(document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'K=') div 100) ) + (substring-after($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'K=') div 100) ) ) * 255, '#', 'rgb')"/> </red> <green> <xsl:value-of select="format-number(( 1 - ( (substring-before(substring-after(document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'M='),' ') div 100) * ( 1 - (substring-after($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'K=') div 100) ) + (substring-after(document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'K=') div 100) ) ) * 255, '#', 'rgb')"/> </green> <blue> <xsl:value-of select="format-number(( 1 - ( (substring-before(substring-after(document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'Y='),' ') div 100) * ( 1 - (substring-after($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'K=') div 100) ) + (substring-after(document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'K=') div 100) ) ) * 255, '#', 'rgb')"/> </blue> </xsl:when> <xsl:when test="document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@Space = 'RGB'"> <red> <xsl:value-of select="substring-before(substring-after(document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'R='),' ')"/> </red> <green> <xsl:value-of select="substring-before(substring-after(document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'G='),' ')"/> </green> <blue> <xsl:value-of select="substring-after(document($colorValuesFile)/idPkg:Graphic/Color[Self='$fillColorName']/@ColorValue,'B=')"/> </blue> </xsl:when> </xsl:choose> </xsl:variable>
Danke für jede Hilfe.
Gruss
Dom
Comment