2012-07-27 36 views
0
<td class="num"> 
             <xsl:if test="min(//vrednostDelnice)=trgovalniPodatki/vrednostDelnice"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//vrednostDelnice)=trgovalniPodatki/vrednostDelnice"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="format-number(trgovalniPodatki/vrednostDelnice, '#.###,00 €', 'euro')"/> 
            </td> 

,但我得到XPath和分功能不能覺察XSLT

This document had an invalid XSLT stylesheet. Error message from the XSLT engine: 
Error: XPath expression compilation failed: min(//vrednostDelnice)=trgovalniPodatki/vrednostDelnice 
Details: compilation error (characters 1-22, "min(//vrednostDelnice)"): unknown function called: 'min' 

爲什麼分鐘不被認可。 min的S-有效功能:http://www.xsltfunctions.com/xsl/fn_min.html

編輯:

XSL:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:fn="http://www.w3.org/2005/xpath-functions"> 
    <xsl:output method="xhtml" version="1.0" encoding="UTF-8" indent="yes"/> 

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="odlocitvenProblem.xsl"?> 
<delnice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="odlocitvenProblem.xsd"> 

整體的xsl:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:fn="http://www.w3.org/2005/xpath-functions"> 
    <xsl:output method="xhtml" version="1.0" encoding="UTF-8" indent="yes"/> 
    <xsl:decimal-format name="euro" decimal-separator="," grouping-separator="."/> 
    <xsl:variable name="kolicnik" select="'1000'"/> 
    <xsl:key name="id" match="delnica" use="@id"/> 
    <xsl:template match="/"> 
     <html> 
      <head> 
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
       <title>Delnice - seznam alternativ</title> 
       <style type="text/css"> 
        body {font: normal 12px/1.6em Arial, Helvetica, sans-serif;color: #2a3845;margin: 0;padding-left: 5px;padding-right: 5px; background: #FFFFFF; width: 100%; } 
        table { margin: 0;padding 0; border: 1px solid #efece7; margin: 0 auto; font : normal 12px/1.6em Arial, Helvetica, sans-serif;color: #2a3845; width: 100%; border-collapse: collapse; } 
        td { border: 1px solid #efece7; padding: 2px; } 
        th { border: 1px solid #efece7; padding: 2px; } 
        td.num { text-align: right;} 
        td.green { text-align: right; color: green;} 
        td.red { text-align: right; color: red;} 
        h1 { color: #7a2e40;margin: 0px 0px 10px 0px;padding-bottom: 10px;font: normal 17px Georgia, serif;border-bottom: 1px solid #efece7;} 
        #wrapper {margin: 0 auto;border-left: 1px solid #f0e9eb;border-right: 1px solid #f0e9eb;} 
        #header {margin: 0 0px; background: #7a2e40;color: #f6dde3; height: 30px;} 
        #main-content { margin: 0 auto; float: left; padding-top: 30px; padding-right: 10px; padding-bottom: 30px; padding-left: 10px;} 
        #footer {background: #f7f7f7; border-top: 1px solid #f0e9eb; border-bottom: 1px solid #f0e9eb; clear: both; height: 30px; } 
        tr.footer { font-size: 10px; vertical-align: top;} 
       </style> 
      </head> 
      <body> 
       <div id="wrapper"> 
        <div id="header">&#160;</div> 
        <div id="main-content"> 
         <h1>Delnice - seznam alternativ</h1> 
         <br/> 
         <table cellspacing="0"> 
          <tr> 
           <th rowspan="2"></th> 
           <th rowspan="2">Naziv</th> 
           <th rowspan="2">Kratica</th> 
           <th rowspan="2">Vrednost delnice<br/> 
(<xsl:value-of select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='vrednostDelnice']/@utez"/>) 
           </th> 
           <th colspan="3">Sprememba tečaja</th> 
           <th rowspan="2">Vrednost dividende<br/> 
(<xsl:value-of select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='vrednostDividende']/@utez"/>) 
           </th> 
           <th rowspan="2">Dividendni donos<br/> 
(<xsl:value-of select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='dividendniDonos']/@utez"/>) 
           </th> 
           <th rowspan="2">Promet<br/> 
(<xsl:value-of select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='promet']/@utez"/>) 
           </th> 
           <th rowspan="2">Tržna kapitalizacija<br/> 
(<xsl:value-of select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='trznaKapitalizacija']/@utez"/>) * 
           </th> 
           <th rowspan="2">Število delnic</th> 
           <th rowspan="2">Čisti dobiček<br/> 
(<xsl:value-of select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='cistiDobicek']/@utez"/>) * 
           </th> 
           <th rowspan="2">Finančna sredstva<br/> 
(<xsl:value-of select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='financnaSredstva']/@utez"/>) * 
           </th> 
          </tr> 
          <tr> 
           <th>Letna<br/> 
(<xsl:value-of select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='zadnjeLeto']/@utez"/>) 
           </th> 
           <th>Mesečna<br/> 
(<xsl:value-of select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='zadnjiMesec']/@utez"/>) 
           </th> 
           <th>Dnevna<br/> 
(<xsl:value-of select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='zadnjiDan']/@utez"/>) 
           </th> 
          </tr> 
          <xsl:for-each select="/delnice/*"> 
           <xsl:sort select="nazivDruzbe"/> 
           <xsl:call-template name="alternative"> 
            <xsl:with-param name="node" select="."/> 
           </xsl:call-template> 
          </xsl:for-each> 
          <tr class="footer"> 
           <td></td> 
           <td></td> 
           <td></td> 
           <td><xsl:for-each select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='vrednostDelnice']/zalogaVrednosti"> 
            <xsl:value-of select="@ocena"/>:&#160;<xsl:value-of select="spMeja" /> - <xsl:value-of select="zgMeja" /> 
            <br/> 
           </xsl:for-each></td> 
           <td><xsl:for-each select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='zadnjeLeto']/zalogaVrednosti"> 
            <xsl:value-of select="@ocena"/>:&#160;<xsl:value-of select="spMeja" /> - <xsl:value-of select="zgMeja" /> 
            <br/> 
           </xsl:for-each></td> 
           <td><xsl:for-each select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='zadnjiMesec']/zalogaVrednosti"> 
            <xsl:value-of select="@ocena"/>:&#160;<xsl:value-of select="spMeja" /> - <xsl:value-of select="zgMeja" /> 
            <br/> 
           </xsl:for-each></td> 
           <td><xsl:for-each select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='zadnjiDan']/zalogaVrednosti"> 
            <xsl:value-of select="@ocena"/>:&#160;<xsl:value-of select="spMeja" /> - <xsl:value-of select="zgMeja" /> 
            <br/> 
           </xsl:for-each></td> 
           <td><xsl:for-each select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='vrednostDividende']/zalogaVrednosti"> 
            <xsl:value-of select="@ocena"/>:&#160;<xsl:value-of select="spMeja" /> - <xsl:value-of select="zgMeja" /> 
            <br/> 
           </xsl:for-each></td> 
           <td><xsl:for-each select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='dividendniDonos']/zalogaVrednosti"> 
            <xsl:value-of select="@ocena"/>:&#160;<xsl:value-of select="spMeja" /> - <xsl:value-of select="zgMeja" /> 
            <br/> 
           </xsl:for-each></td> 
           <td><xsl:for-each select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='promet']/zalogaVrednosti"> 
            <xsl:value-of select="@ocena"/>:&#160;<xsl:value-of select="spMeja" /> - <xsl:value-of select="zgMeja" /> 
            <br/> 
           </xsl:for-each></td> 
           <td><xsl:for-each select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='trznaKapitalizacija']/zalogaVrednosti"> 
            <xsl:value-of select="@ocena"/>:&#160;<xsl:value-of select="spMeja div number($kolicnik)" /> - <xsl:value-of select="zgMeja div 1000" /> 
            <br/> 
           </xsl:for-each></td> 
           <td></td> 
           <td><xsl:for-each select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='cistiDobicek']/zalogaVrednosti"> 
            <xsl:value-of select="@ocena"/>:&#160;<xsl:value-of select="spMeja div number($kolicnik)" /> - <xsl:value-of select="zgMeja div 1000" /> 
            <br/> 
           </xsl:for-each></td> 
           <td><xsl:for-each select="document('uteziParametrov.xml')/uteziDelnic/parameter[@naziv='financnaSredstva']/zalogaVrednosti"> 
            <xsl:value-of select="@ocena"/>:&#160;<xsl:value-of select="spMeja div number($kolicnik)" /> - <xsl:value-of select="zgMeja div 1000" /> 
            <br/> 
           </xsl:for-each></td> 
          </tr> 
         </table> 
         <span style="font-size: 80%;">* v <xsl:value-of select="$kolicnik"/></span> 
        </div> 
        <div id="footer">&#160;</div> 
       </div> 
      </body> 
     </html> 
    </xsl:template> 

    <xsl:template name="alternative"> 
     <xsl:param name="node"/> 
      <tr> 
       <td> 
        <xsl:number value="position()" format="1" /> 
       </td> 
       <td> 
        <xsl:value-of select="$node/nazivDruzbe"/> 
       </td> 
       <td> 
        <xsl:value-of select="kratica"/> 
       </td> 
            <td class="num"> 
             <xsl:if test="fn:min(//vrednostDelnice)=trgovalniPodatki/vrednostDelnice"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//vrednostDelnice)=trgovalniPodatki/vrednostDelnice"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="format-number(trgovalniPodatki/vrednostDelnice, '#.###,00 €', 'euro')"/> 
            </td> 
            <td class="num"> 
             <xsl:if test="min(//zadnjeLeto)=trgovalniPodatki/spremembaTecaja/zadnjeLeto"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//zadnjeLeto)=trgovalniPodatki/spremembaTecaja/zadnjeLeto"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="trgovalniPodatki/spremembaTecaja/zadnjeLeto"/>%</td> 
            <td class="num"> 
             <xsl:if test="min(//zadnjiMesec)=trgovalniPodatki/spremembaTecaja/zadnjiMesec"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//zadnjiMesec)=trgovalniPodatki/spremembaTecaja/zadnjiMesec"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="trgovalniPodatki/spremembaTecaja/zadnjiMesec"/>%</td> 
            <td class="num"> 
             <xsl:if test="min(//zadnjiDan)=trgovalniPodatki/spremembaTecaja/zadnjiDan"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//zadnjiDan)=trgovalniPodatki/spremembaTecaja/zadnjiDan"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="trgovalniPodatki/spremembaTecaja/zadnjiDan"/>%</td> 
            <td class="num"> 
             <xsl:if test="min(//vrednostDividende)=trgovalniPodatki/vrednostDividende"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//vrednostDividende)=trgovalniPodatki/vrednostDividende"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="trgovalniPodatki/vrednostDividende"/> 
            </td> 
            <td class="num"> 
             <xsl:if test="min(//dividendniDonos)=trgovalniPodatki/dividendniDonos"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//dividendniDonos)=trgovalniPodatki/dividendniDonos"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="trgovalniPodatki/dividendniDonos"/>%</td> 
            <td class="num"> 
             <xsl:if test="min(//promet)=trgovalniPodatki/promet"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//promet)=trgovalniPodatki/promet"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="trgovalniPodatki/promet"/> 
            </td> 
            <td class="num"> 
             <xsl:if test="min(//trznaKapitalizacija)=trgovalniPodatki/trznaKapitalizacija"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//trznaKapitalizacija)=trgovalniPodatki/trznaKapitalizacija"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="format-number(trgovalniPodatki/trznaKapitalizacija div number($kolicnik), '###.###.###', 'euro')"/> 
            </td> 
            <td class="num"> 
             <xsl:value-of select="financniPodatki/steviloDelnic"/> 
            </td> 
            <td class="num"> 
             <xsl:if test="min(//cistiDobicek)=financniPodatki/cistiDobicek"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//cistiDobicek)=financniPodatki/cistiDobicek"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="financniPodatki/cistiDobicek div number($kolicnik)"/> 
            </td> 
            <td class="num"> 
             <xsl:if test="min(//financnaSredstva)=financniPodatki/financnaSredstva"> 
              <xsl:attribute name="class">red</xsl:attribute> 
             </xsl:if> 
             <xsl:if test="max(//financnaSredstva)=financniPodatki/financnaSredstva"> 
              <xsl:attribute name="class">green</xsl:attribute> 
             </xsl:if> 
             <xsl:value-of select="financniPodatki/financnaSredstva div number($kolicnik)"/> 
      </td> 
     </tr> 
    </xsl:template> 
</xsl:stylesheet> 
+0

您認爲您正在使用哪種版本的XSLT?您的XSLT處理器**認爲您使用的是哪種版本的XSLT? – 2012-07-27 07:25:04

+0

我更新我的問題 – senzacionale 2012-07-27 07:29:29

+1

嘗試fn:min,因爲您正在使用擴展功能 – Woody 2012-07-27 07:59:26

回答

1

min FUNC它是XSLT和XPath 2.0的一部分,這種方式得到了Saxon 9,AltovaXML或XmlPrime等XSLT 2.0處理器的支持。在瀏覽器內部,除非使用Saxon-CE,否則不支持XSLT 2.0。所以你得到的錯誤僅僅意味着你正試圖用XSLT 1.0處理器運行XSLT 2.0代碼。

+0

謝謝你的回答。我該怎麼做。我已經有 senzacionale 2012-07-27 09:21:20

+0

您需要使用XSLT 2.0處理器,而不是XSLT 1.0處理器。我提到了一些XSLT 2.0處理器,如Saxon 9 http://saxon.sourceforge.net/或AltovaXML http://www.altova.com/altovaxml.html。因此,如果您想使用XSLT 2.0,請安裝並使用其中之一。 – 2012-07-27 11:33:35

1

如果您調用的XSLT處理器只理解XSLT 1.0,那麼說您的樣式表是2.0版樣式表不會有幫助。我不認識你收到的錯誤消息,並且在你的文章中沒有關於你正在使用哪個XSLT處理器的其他線索,但它看起來似乎是XSLT 1.0處理器。告訴我們您是如何進行轉換的,例如從命令行,瀏覽器或某種編程語言的應用程序。