Guest User

Untitled

a guest
Oct 30th, 2013
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 13.29 KB | None | 0 0
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3.    xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"
  4. >
  5.     <xsl:output method="html"/>
  6.     <xsl:strip-space elements="*"/>
  7.     <xsl:template match="/">
  8.         <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;</xsl:text>
  9.         <html>
  10.             <head><xsl:text disable-output-escaping="yes"><![CDATA[</meta>]]></xsl:text>
  11.                 <!--<title>
  12.                     <xsl:value-of select="index/title"/>
  13.                 </title>-->
  14.                 <link rel="stylesheet" href="D:\Backup-Desktop\HKWB2014-Part A - Section 2 - Practice Directions-Deskrop\2500\main.css" type="text/css"/><xsl:text disable-output-escaping="yes"><![CDATA[</link>]]></xsl:text>
  15.             </head>
  16.             <body>
  17.                 <section class="tr_index">
  18.                 <xsl:apply-templates/>
  19.                 </section>
  20.             </body>
  21.         </html>
  22.     </xsl:template>
  23.    
  24.    
  25.    
  26.     <xsl:template match="index">
  27.         <div class="index">
  28.             <xsl:variable name="num">
  29.                 <xsl:number level="any" format="01"/>
  30.             </xsl:variable>
  31.             <a name="CHA_IDX_{$num}"  class="tr_toc_anchor"/>
  32.             <div class="index-title">
  33.             <!--    <xsl:apply-templates select="title"/>-->
  34.                 <xsl:value-of select="index/title/@text()"/>
  35.             </div>
  36.             <xsl:apply-templates select="indexdiv"/>
  37.            
  38.         </div>
  39.     </xsl:template>
  40.     <xsl:template match="indexdiv">
  41.        
  42.             <xsl:apply-templates/>
  43.        
  44.     </xsl:template>
  45.     <xsl:template match="indexdiv/title">
  46.  
  47.     </xsl:template>
  48.     <xsl:template match="indexentry">
  49.     <div class="indexdiv">
  50.         <div class="indexentry">
  51.             <xsl:apply-templates/>
  52.             </div>
  53.         </div>
  54.     </xsl:template>
  55.     <xsl:template match="primaryie">
  56.         <div class="primaryie">
  57.             <xsl:apply-templates select="content-style"/>
  58.             <xsl:if test="contains(current()/text(), '.')">
  59.                 <xsl:variable name="numberString" select="substring(current()/text(), string-length(substring-before(current()/text(),'.'))-1)"/>
  60.                 <xsl:call-template name="numbersToLink">
  61.                     <xsl:with-param name="numbersString" select="$numberString"/>
  62.                 </xsl:call-template>
  63.             </xsl:if>
  64.         </div>
  65.     </xsl:template>
  66.     <xsl:template match="secondaryie">
  67.         <div class="secondaryie">
  68.             <xsl:apply-templates/>
  69.         </div>
  70.     </xsl:template>
  71.    
  72.  
  73.  
  74. <xsl:template match="text()">
  75.  
  76.           <xsl:analyze-string select="." regex="[^,\s—[A-Z]+]+">
  77.  
  78.             <xsl:matching-substring>
  79.                 <xsl:variable name="range" select="tokenize(.,'—')"/>
  80.                 <xsl:variable name="pg" select="tokenize(.,'/')"/>
  81. <xsl:choose>
  82.     <xsl:when test="not(contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ',substring(.,1,1)))">
  83.    
  84.         <xsl:choose>
  85.                     <xsl:when test="contains($pg[3],'—')">
  86.                         <xsl:variable name="range-pg" as="item()*">
  87.                             <xsl:for-each select="$range">
  88.                                 <xsl:sequence select="tokenize(.,'/')"/>
  89.                             </xsl:for-each>
  90.                         </xsl:variable>
  91.                         <xsl:for-each select="xs:integer($range-pg[3]) to xs:integer($range-pg[6])">
  92.                             <a href="er:#HKWBV1_ORD_{
  93.                                if (string(number($range-pg[1]))!='NaN') then
  94.                                format-number(number($range-pg[1]),'00')
  95.                                else
  96.                                $range-pg[1]}/P{string-join($range-pg[position()=(1,2)],'/')}/{.}">
  97.                                 <xsl:value-of select="concat(string-join($range-pg[position()=(1,2)],'/'),'/',.)"/>
  98.                             </a>
  99.                             <xsl:text>, </xsl:text>
  100.                         </xsl:for-each>
  101.                     </xsl:when>
  102.                     <xsl:otherwise>
  103.                         <a href="er:#HKWBV1_ORD_{
  104.                            if (string(number($pg[1]))!='NaN') then
  105.                            format-number(number($pg[1]),'00')
  106.                            else
  107.                            $pg[1]}/P{$pg[1]
  108.                            }/{string-join($pg[position()>1],'/')}">
  109.                             <xsl:value-of select="."/>
  110.                         </a>                            
  111.                     </xsl:otherwise>
  112.                 </xsl:choose>
  113.  
  114.     </xsl:when>
  115.    
  116.    
  117.     <xsl:otherwise>
  118. <xsl:choose>
  119.     <xsl:when test="contains('PD',substring(.,1,2))">
  120.  
  121. <a href="{concat('HKWBV1_SEC_',substring-after(substring-before(.,'/'),'PD'),'/PPD',translate(substring-after(.,'PD'),'.','-'))}">
  122. <xsl:value-of select="."/>
  123. </a>
  124.  
  125.  
  126.  
  127.  
  128. </xsl:when>
  129. <xsl:otherwise>
  130.     <span class="invalid">
  131. <xsl:value-of select="."/> 
  132.     </span>
  133.     </xsl:otherwise>
  134. </xsl:choose>
  135.  
  136.  
  137.  
  138.     </xsl:otherwise>
  139. </xsl:choose>
  140.                
  141.            
  142.                
  143.                
  144.                
  145.             </xsl:matching-substring>
  146.             <xsl:non-matching-substring>
  147.                 <xsl:value-of select="."/>
  148.             </xsl:non-matching-substring>
  149.         </xsl:analyze-string>          
  150.    
  151.    
  152.    
  153.    
  154. </xsl:template>
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164. <xsl:template match="tertiaryie">
  165.         <xsl:variable name="tertClassType">
  166.             <xsl:value-of select="@level"/>
  167.         </xsl:variable>
  168.         <xsl:variable name="tertClassTypName">
  169.             <xsl:value-of select="concat('tertiaryie-', $tertClassType)"/>
  170.         </xsl:variable>
  171.         <div class="tertiaryie">
  172.             <xsl:apply-templates/>
  173.         </div>
  174.     </xsl:template>
  175.    
  176.     <xsl:template match="content-style" name="content-style">
  177.         <xsl:variable name="fontStyle">
  178.             <xsl:value-of select="concat('font-style-',@font-style)"/>
  179.         </xsl:variable>
  180.         <span class="{$fontStyle}">
  181.         <xsl:variable name="textAll">
  182.                 <xsl:value-of select="text()"/>
  183.             </xsl:variable>
  184.             <xsl:choose>
  185.                 <xsl:when test="contains($textAll, '.')">
  186.                
  187.             <xsl:variable name="textOnly">
  188.                 <xsl:choose>
  189.                     <xsl:when test="contains($textAll,'.')">
  190.                         <xsl:value-of select="substring($textAll,1,string-length(substring-before($textAll,'.'))-1)"/>
  191.                     </xsl:when>
  192.                     <xsl:otherwise>
  193.                         <xsl:value-of select="text()"/>
  194.                     </xsl:otherwise>
  195.                 </xsl:choose>
  196.             </xsl:variable>
  197.             <xsl:variable name="numbersOnly">
  198.                 <xsl:choose>
  199.                     <xsl:when test="contains($textAll,'.')">
  200.                         <xsl:value-of select="substring($textAll,string-length($textOnly))"/>
  201.                     </xsl:when>
  202.                 </xsl:choose>
  203.             </xsl:variable>
  204.                             <xsl:value-of select="$textOnly"/>
  205.                 <xsl:call-template name="numbersToLink">
  206.                     <xsl:with-param name="numbersString" select="$numbersOnly"/>
  207.                 </xsl:call-template>
  208.                
  209.                 </xsl:when>
  210.                
  211.             <xsl:otherwise>
  212.                          <xsl:apply-templates/>
  213.                          </xsl:otherwise>
  214.             </xsl:choose>
  215.            
  216.            
  217.         </span>
  218.     </xsl:template>
  219.    
  220.     <xsl:template name="numbersToLink">
  221.         <xsl:param name="numbersString"/>
  222.         <xsl:choose>
  223.         <xsl:when test="contains($numbersString, '-')">
  224.                 <xsl:call-template name="splitByHyphen">
  225.                     <xsl:with-param name="numString" select="$numbersString"/>
  226.                 </xsl:call-template>
  227.             </xsl:when>
  228.  <xsl:when test="contains($numbersString, ' ')">
  229.                 <xsl:call-template name="Space">
  230.                     <xsl:with-param name="numString" select="$numbersString"/>
  231.                 </xsl:call-template>
  232.             </xsl:when>    
  233.        
  234.             <xsl:when test="contains($numbersString, ',')">
  235.                 <xsl:call-template name="splitByComma">
  236.                     <xsl:with-param name="numString" select="$numbersString"/>
  237.                 </xsl:call-template>
  238.             </xsl:when>
  239.        
  240.            
  241.             <xsl:when test="5 >= string-length(normalize-space($numbersString))">
  242.                 <xsl:variable name="x">
  243.                     <xsl:value-of select="substring-after($numbersString,'.')"/>
  244.                 </xsl:variable>
  245.                 <xsl:variable name="y">
  246.                     <xsl:value-of select="normalize-space(substring-before($numbersString,'.'))"/>
  247.                 </xsl:variable>
  248.        
  249.                 <xsl:variable name="conca">
  250.                     <xsl:value-of select="concat('er:#CHA_CH_0',$y,'/P',$y,'-',$x)"/>
  251.                 </xsl:variable>
  252.                 <a href="{$conca}">
  253.                     <xsl:value-of select="$numbersString"/>
  254.                 </a>
  255.             </xsl:when>
  256.            
  257.             <xsl:when test="6 >= string-length(normalize-space($numbersString))">
  258.                 <xsl:variable name="x">
  259.                     <xsl:value-of select="substring-after($numbersString,'.')"/>
  260.                 </xsl:variable>
  261.                 <xsl:variable name="y">
  262.                     <xsl:value-of select="normalize-space(substring-before($numbersString,'.'))"/>
  263.                 </xsl:variable>
  264.        
  265.                 <xsl:variable name="conca">
  266.                     <xsl:value-of select="concat('er:#CHA_CH_0',$y,'/P',$y,'-',$x)"/>
  267.                 </xsl:variable>
  268.                 <a href="{$conca}">
  269.                     <xsl:value-of select="$numbersString"/>
  270.                 </a>
  271.             </xsl:when>
  272.             <xsl:otherwise>
  273.  
  274.             </xsl:otherwise>
  275.         </xsl:choose>
  276.     </xsl:template>
  277.    
  278.    
  279.     <!--Space Template-->
  280.     <xsl:template name="Space">
  281.         <xsl:param name="numString"/>
  282.         <xsl:choose>
  283.    
  284.            
  285.             <xsl:when test="contains($numString,' ') and contains(substring-before($numString,' '),'.')">
  286.            
  287.             <xsl:variable name="StrLen">
  288.            
  289.             <xsl:value-of select="string-length(substring-before(substring-after($numString,'.'),' '))"/>
  290.            
  291.             </xsl:variable>
  292.                 <xsl:variable name="abc">
  293.                     <xsl:value-of select="normalize-space(substring-before($numString,'.'))"/>
  294.                 </xsl:variable>
  295.                 <xsl:variable name="def">
  296.                 <xsl:choose>
  297.                     <xsl:when test="contains($numString,',')">
  298.                     <xsl:value-of select="translate(substring-before(substring-after($numString,'.'),' '),',','' )"/>
  299.                 </xsl:when>
  300.                     <xsl:otherwise>
  301.                     <xsl:value-of select="substring-before(substring-after($numString,'.'),' ') "/>
  302.                 </xsl:otherwise>
  303.                 </xsl:choose>
  304.                 </xsl:variable>
  305.                 <xsl:variable name="conct">
  306.                
  307.                     <xsl:choose>
  308.                         <xsl:when test="$StrLen &lt;= 2">
  309.                         <xsl:value-of select="concat('er:#CHA_CH_0',$abc,'/P',$abc,'-00',$def)"/>
  310.                        
  311.                         </xsl:when>
  312.                         <xsl:otherwise>
  313.                         <xsl:value-of select="concat('er:#CHA_CH_0',$abc,'/P',$abc,'-',$def)"/>
  314.                        
  315.                        
  316.                         </xsl:otherwise>
  317.                     </xsl:choose>
  318.                 </xsl:variable>
  319.                 <xsl:variable name="Con1">
  320.                         <xsl:value-of select="concat($abc,'.00',$def)"/>
  321.                         </xsl:variable>
  322.                 <xsl:variable name="Con">
  323.                         <xsl:value-of select="concat($abc,'.',$def)"/>
  324.                         </xsl:variable>
  325.                        
  326.                             <xsl:choose>
  327.                                 <xsl:when test="$StrLen &lt;= 2">
  328.                                     <a href="{$conct}">
  329.                     <xsl:value-of select="$Con1"/>
  330.                 </a>
  331.                                 </xsl:when>
  332.                                 <xsl:otherwise>
  333.                     <a href="{$conct}">
  334.                     <xsl:value-of select="$Con"/>
  335.                 </a>
  336.  
  337.                                 </xsl:otherwise>
  338.                             </xsl:choose>
  339.                        
  340.                 <!--<a href="{$conct}">
  341.                     <xsl:value-of select="$Con"/>
  342.                 </a>-->
  343.                 <xsl:choose>
  344.                     <xsl:when test="contains(.,', ')">
  345.                     <xsl:text>, </xsl:text>
  346.                     </xsl:when>
  347.                     <xsl:when test="contains(.,'-')">
  348.                     <xsl:text></xsl:text>
  349.                     </xsl:when>
  350.                     <xsl:otherwise>
  351.                     <xsl:text> </xsl:text>
  352.                     </xsl:otherwise>
  353.                 </xsl:choose>
  354.                 <xsl:call-template name="numbersToLink">
  355.                         <xsl:with-param name="numbersString" select="normalize-space(substring-after($numString,' '))"/>
  356.                     </xsl:call-template>
  357.            
  358.             </xsl:when>
  359.    
  360.            
  361.            
  362.             <xsl:otherwise>
  363.             <xsl:call-template name="numbersToLink">
  364.                         <xsl:with-param name="numbersString" select="normalize-space(substring-after($numString,' '))"/>
  365.                     </xsl:call-template>
  366.             </xsl:otherwise>
  367.         </xsl:choose>
  368.     </xsl:template>
  369.    
  370.    
  371.    
  372.  
  373.     <xsl:template name="splitByComma">
  374.         <xsl:param name="numString"/>
  375.         <xsl:choose>
  376.             <xsl:when test="contains(substring-before($numString,','), '-')">
  377.                 <xsl:call-template name="splitByHyphen">
  378.                     <xsl:with-param name="numString" select="$numString"/>
  379.                 </xsl:call-template>
  380.             </xsl:when>
  381.             <xsl:when test="contains($numString,',')">
  382.                 <xsl:variable name="abc">
  383.                     <xsl:value-of select="normalize-space(substring-before($numString,'.'))"/>
  384.                 </xsl:variable>
  385.                 <xsl:variable name="def">
  386.                     <xsl:value-of select="substring-before(substring-after($numString,'.'),',') "/>
  387.                 </xsl:variable>
  388.                 <xsl:variable name="conct">
  389.                     <xsl:value-of select="concat('er:#CHA_CH_0',$abc,'/P',$abc,'-',$def)"/>
  390.                 </xsl:variable>
  391.                 <a href="{$conct}">
  392.                     <xsl:value-of select="substring-before($numString,',')"/>
  393.                 </a>
  394.                 <xsl:text>, </xsl:text>
  395.                 <xsl:if test="contains(substring-after($numString,','), '.')">
  396.                     <xsl:call-template name="numbersToLink">
  397.                         <xsl:with-param name="numbersString" select="normalize-space(substring-after($numString,','))"/>
  398.                     </xsl:call-template>
  399.                 </xsl:if>
  400.             </xsl:when>
  401.         </xsl:choose>
  402.     </xsl:template>
  403.    
  404.    
  405.    
  406.    
  407.     <xsl:template name="splitByHyphen">
  408.         <xsl:param name="numString"/>
  409.         <xsl:choose>
  410.             <xsl:when test="contains($numString,'-')">
  411.                 <xsl:variable name="abc">
  412.                     <xsl:value-of select="normalize-space(substring-before($numString,'.'))"/>
  413.                 </xsl:variable>
  414.                 <xsl:variable name="def">
  415.                     <xsl:value-of select="substring-before(substring-after($numString,'.'),'-') "/>
  416.                 </xsl:variable>
  417.                 <xsl:variable name="conct">
  418.                     <xsl:value-of select="concat('er:#CHA_CH_0',$abc,'/P',$abc,'-',$def)"/>
  419.                     </xsl:variable>
  420.                 <a href="{$conct}">
  421.                     <xsl:value-of select="substring-before($numString,'-')"/>
  422.                 </a>
  423.                 <xsl:text>&#x2013;</xsl:text>
  424.                 <xsl:if test="contains(substring-after($numString,'-'), '.')">
  425.                     <xsl:call-template name="numbersToLink">
  426.                         <xsl:with-param name="numbersString" select="normalize-space(substring-after($numString,'-'))"/>
  427.                     </xsl:call-template>
  428.                 </xsl:if>
  429.             </xsl:when>
  430.         </xsl:choose>
  431.     </xsl:template>
  432. </xsl:stylesheet>
Advertisement
Add Comment
Please, Sign In to add comment