2014-10-15 6 views
0

저는 제 출력물에 21 세기의 대통령 만 표시하고 싶습니다. xsl 문서에서이 문제를 어떻게 해결할 수 있습니까? xml 파일에서 네임 스페이스를 사용해야하고이를 .xsd 및 xsl 파일에 통합해야합니까? xs : date 값에서 날짜를 추출하려면 어떻게합니까?xs : date에서 연도를 추출합니다.

<?xml-stylesheet type="text/xsl" href="president_21c.xsl"?> 

<presidents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="president.xsd" xmlns:president="http://www.du.edu/~mschwart/xml/president" date="2014-09-24"> 

    <president> 
     <number>41</number> 
     <name>George H. W. Bush</name> 
     <birthday>1924-06-12</birthday> 
     <took_office>1989-01-20</took_office> 
     <left_office>1993-01-20</left_office> 
     <party>Republican</party> 
     <term> 
      <term_number>51</term_number> 
      <vice_president>Dan Quayle</vice_president> 
     </term> 
     <president_image>images/41.jpg</president_image> 
    </president> 

    <president> 
     <number>42</number> 
     <name>Bill Clinton</name> 
     <birthday>1946-08-19</birthday> 
     <took_office>1993-01-20</took_office> 
     <left_office>2001-01-20</left_office> 
     <party>Democratic</party> 
     <term> 
      <term_number>52</term_number> 
      <vice_president>Al Gore</vice_president> 
     </term> 
     <term> 
      <term_number>53</term_number> 
      <vice_president>Al Gore</vice_president> 
     </term> 
     <president_image>images/42.jpg</president_image> 
    </president> 

    <president> 
     <number>43</number> 
     <name>George W. Bush</name> 
     <birthday>1946-07-06</birthday> 
     <took_office>2001-01-20</took_office> 
     <left_office>2009-01-20</left_office> 
     <party>Republican</party> 
     <term> 
      <term_number>54</term_number> 
      <vice_president>Dick Cheney</vice_president> 
     </term> 
     <term> 
      <term_number>55</term_number> 
      <vice_president>Dick Cheney</vice_president> 
     </term> 
     <president_image>images/43.jpg</president_image> 
    </president> 

    <president> 
     <number>44</number> 
     <name>Barack Obama</name> 
     <birthday>1961-08-04</birthday> 
     <took_office>2009-01-20</took_office> 
     <left_office xsi:nil="true"/> 
     <party>Democratic</party> 
     <term> 
      <term_number>56</term_number> 
      <vice_president>Joe Biden</vice_president> 
     </term> 
     <president_image>images/44.jpg</president_image> 
    </president> 
</presidents> 

내 XSL : 날짜가 year-from-date() function를 사용하는 것입니다에서

<?xml version="1.0"?> 

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="html" version="4.0"/> 

<xsl:template match="/"> 
    <html> 
    <head> 
    <link rel="stylesheet" type="text/css" href="president_21c.css"/> 
    <title>Table of Us Presidents</title> 
    </head> 
    <body> 
     <h1>Table of Us Presidents</h1> 
     <table> 
      <tr> 
       <th>Name</th> 
       <th>Birthday</th> 
       <th>Took Office</th> 
       <th>Left Office</th> 
       <th>Party</th> 
       <th>Vice President</th> 
       <th>Portrait</th> 
      </tr> 
      <xsl:apply-templates select="//president"> 
       <xsl:sort select="party"/> 
      </xsl:apply-templates> 
     </table> 
    </body> 
    </html> 
</xsl:template> 

<xsl:template match="president"> 
<tr> 
    <td><xsl:apply-templates select="name"/></td> 
    <td><xsl:apply-templates select="birthday"/></td> 
    <td><xsl:apply-templates select="took_office"/></td> 
    <td><xsl:apply-templates select="left_office"/></td> 
    <td><xsl:apply-templates select="party"/></td> 
    <td> 
    <xsl:for-each select="term"> 
     <xsl:number value="position()" format="1. " /> 
     <xsl:value-of select="vice_president" /><br /> 
    </xsl:for-each> 
    </td> 
    <td align="center" style="background-color: #E1E0E0;"> 
    <img src="{president_image}" class="president_image"/> 
    </td> 
</tr> 
</xsl:template> 



</xsl:stylesheet> 

답변

1

공식적인 방법은 올해 추출

여기 내 XML이다.

substring-before(your-date, '-') 
+0

상선을 K :

(종종 더 편리 할 수 ​​있음) 비정형있어서 사용하는 것이다. 그럼 어떻게 이것을 내 xsl 문서에 구현합니까? – esgg

+0

@esgg 위의 링크에서 예제를 복사하여 내 답변에 붙여 넣을 수 있습니다. –

+0

ok 좋습니다. – esgg

관련 문제