Werbalizacja RIF za pomocą XSLT

<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
 <xsl:template match="Group">
  < html>< body>
    <xsl:for-each select="./sentence">
     If 
     <xsl:choose>
     <xsl:when test="./Implies/if/Or">
      <xsl:for-each select="./Implies/if/Or/formula">
       <xsl:choose>
        <xsl:when test="./Equal">
         <b><xsl:value-of select="./Equal/side/Var"/></b> is <b><xsl:value-of select="./Equal/side/Const"/></b>
        </xsl:when>
        <xsl:when test="./Atom">
         <xsl:apply-templates select="./Atom"/> is true
        </xsl:when>
        <xsl:when test="./External">
         External <xsl:apply-templates select="./External/content/Expr|./External/content/Atom"/> is true
        </xsl:when>
       </xsl:choose>
       <xsl:if test="position() != last()">
        or 
       </xsl:if>
      </xsl:for-each>
     </xsl:when>
     <xsl:when test="./Implies/if/And">
      <xsl:for-each select="./Implies/if/And/formula">
        <xsl:choose>
        <xsl:when test="./Equal">
         <b><xsl:value-of select="./Equal/side/Var"/></b> is <b><xsl:value-of select="./Equal/side/Const"/></b>
        </xsl:when>
        <xsl:when test="./Atom">
         <xsl:apply-templates select="./Atom"/> is true
        </xsl:when>
        <xsl:when test="./External">
         External <xsl:apply-templates select="./External/content/Expr|./External/content/Atom"/> is true
        </xsl:when>
       </xsl:choose>
       <xsl:if test="position() != last()">
        And 
       </xsl:if>
      </xsl:for-each>
     </xsl:when>
     <xsl:otherwise>
      <xsl:choose>
        <xsl:when test="./Implies/if/Equal">
         <b><xsl:value-of select="./Implies/if/formula/Equal/side/Var"/></b> is <b><xsl:value-of select="./Implies/if/formula/Equal/side/Const"/></b>
        </xsl:when>
        <xsl:when test="./Implies/if/Atom">
         <xsl:apply-templates select="./Implies/if/Atom"/> is true
        </xsl:when>
        <xsl:when test="./Implies/if/External">
         <xsl:apply-templates select="./Implies/if/External/content/Atom|./Implies/if/formula/External/content/Expr"/> is true
        </xsl:when>
       </xsl:choose>
     </xsl:otherwise>
     </xsl:choose>
     <xsl:choose>
      <xsl:when test="./Implies/then/Atom">
       then <xsl:apply-templates select="./Implies/then/Atom"/>.<br/>
      </xsl:when>
      <xsl:when test="./Implies/then/External">
       then External <xsl:apply-templates select="./Implies/then/External/content/Expr|./Implies/then/External/content/Atom"/>.<br/>
      </xsl:when>
     </xsl:choose>
    </xsl:for-each>
  < /body>
  < /html>
 </xsl:template>
 
 <xsl:template match="arg">
  <xsl:choose>
   <xsl:when test="./Var">
    var <xsl:value-of select="./Var"/>
   </xsl:when>
   <xsl:when test="./Const">
    <xsl:value-of select="./Const"/>
   </xsl:when>
   <xsl:when test="./External/content">
    External <xsl:apply-templates select="./External/content/Expr|./External/content/Atom"/>
   </xsl:when>
   <xsl:when test="./Atom">
    <xsl:apply-templates select="./Atom"/>
   </xsl:when>
  </xsl:choose>
 </xsl:template>
 
 <xsl:template match="Atom">
  <xsl:for-each select="./*">
   <xsl:choose>
    <xsl:when test="name() = 'op'">
     <b><xsl:value-of select="./Const"/>(</b>
    </xsl:when>
    <xsl:otherwise>
     <xsl:apply-templates select="."/>
     <xsl:if test="position() != last()">, </xsl:if>
    </xsl:otherwise>
   </xsl:choose>
  </xsl:for-each>
  <b>)</b>
 </xsl:template>
 
 <xsl:template match="Expr">
  <xsl:for-each select="./*">
    <xsl:choose>
    <xsl:when test="./Const">
     <b><xsl:value-of select="./Const"/>(</b>
    </xsl:when>
    <xsl:otherwise>
     <xsl:apply-templates select="."/>
     <xsl:if test="position() != last()">, </xsl:if>
    </xsl:otherwise>
   </xsl:choose>
  </xsl:for-each>
  <b>)</b>
 </xsl:template>
 
</xsl:stylesheet>

Powrót do dokumentu

pl/miw/miw08_xtt_rif/verb.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0