2017-11-10 4 views
0

Für die folgende XML:XSLT 3.0 bewertet in variable

<?xml version="1.0" encoding="UTF-8"?> 
<pi:Payroll_Extract_Employees xmlns:pi="urn:com.workday/picof"> 
    <pi:company> 
     <pi:employee> 
     <pi:name>John Andrews</pi:name> 
     <pi:age>23</pi:age> 
     <pi:salary>4000</pi:salary> 
     <pi:division>Accounting</pi:division> 
     </pi:employee> 
    </pi:company> 
</pi:Payroll_Extract_Employees> 

ich dieses XSL verwenden Sie den Wert in einer Variablen zu speichern xsl:evaluate und anschließend Ausgang den Wert von Namen Knoten, der in in $names ("John gespeichert Andrews "):

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 

xmlns:pi="urn:com.workday/picof"> 
     <xsl:output method="text"/> 
      <xsl:template match="pi:Payroll_Extract_Employees/pi:company"> 
       <xsl:variable name="test"> 
       <xsl:text>pi:employee/pi:name</xsl:text> 
      </xsl:variable> 
       <xsl:variable name="names" as="element(name)*"> 
       <xsl:evaluate xpath="$test" context-item="."/> 
      </xsl:variable> 
       <xsl:value-of select="$names"/> 
      </xsl:template> 
    </xsl:stylesheet> 
+1

Können Sie bitte erklären, was Ihr Problem ist? Was genau hast du versucht, und was (wenn überhaupt) läuft nicht so, wie du es dir erhofft hast, und warum? – LordWilmore

Antwort

0

Mit der Namespace-Deklaration Sie die Typanmerkung der variablen haben muss sein

<xsl:variable name="names" as="element(pi:name)*"> 
     <xsl:evaluate xpath="$test" context-item="."/> 
    </xsl:variable> 
+0

Scheint nicht für mich zu arbeiten, welchen xslt Prozessor verwendest du? – pshemek

+0

Ich versuchte mit Saxon 9.8.0.5 EE innerhalb oXygen 19.1. Was genau passiert, wenn es "nicht zu funktionieren scheint", erhalten Sie einen Fehler, welches Ergebnis wollen Sie, welches bekommen Sie? –

+0

Ich benutze Saxon 9.6.0.7 EE, also denke ich, dass es das Problem verursacht. – pshemek