当我们使用 XML 打印 XSLT 报告时显示所有页面的页面标题

Show page title for all pages when we print XSLT Report using XML

我想通过在所有页面中使用 PatientID 作为标题或标题来打印报告,以便在我们打印时它会在所有页面中打印页面标题 我不确定如何编写 XSLT 以在所有页面中显示标题

下面是我的代码

XSLT 代码

 <?xml version="1.0" encoding="ISO-8859-1"?>

    <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL /Transform">
    <xsl:output method="html" version='1.0' indent ='yes' omit-xml-declaration="yes"/>
    <xsl:template match="/">

        <html>

     <STYLE TYPE="text/css">
     p     { line-height: "1"}
     br     { line-height: "1pt"}

     </STYLE>

     <body>

  <table >
      <xsl:for-each select="Report/PatDetails">

    <tr>

    <td align = "left" width = "250" height="50"  style="text-align: justify">
        <font name="Book Antiqua"  size="5.0"><B>

                    <xsl:call-template 
                name="substring-before-last">
                <xsl:with-param name="input" select="Value"/>
                <xsl:with-param name="marker" select="'@'" />
                </xsl:call-template>
</B>
        </font>
    </td>

      <td align = "left" width = "600" height="30">
        <font name="Book Antiqua"  size="5.0">

                <xsl:call-template 
                name="substring-after-last">
                <xsl:with-param name="input" select="Value"/>
                <xsl:with-param name="marker" select="'@'" />
                </xsl:call-template>
        </font>
      </td>

    </tr>

    </xsl:for-each>
    </table></body>

        </html>
    </xsl:template>


    <xsl:template name="string-replace">
        <xsl:param name="arg"/>
        <xsl:param name="toReplace"/>
        <xsl:choose>
            <xsl:when test="contains($arg, $toReplace)">
                <xsl:variable name="prefix" select="substring-before($arg, $toReplace)"/>
                <xsl:variable name="postfix" select="substring($arg, string- length($prefix)+string-length($toReplace)+1)"/>
                <xsl:value-of select="$prefix"/>
                <xsl:text disable-output-escaping="yes">&lt;br/&      gt;</xsl:text>
                <xsl:call-template name="string-replace">
                    <xsl:with-param name="arg" select="$postfix"/>
                    <xsl:with-param name="toReplace" select="$toReplace"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$arg"/>
            </xsl:otherwise>
        </xsl:choose>
     </xsl:template>


     <xsl:template name="substring-after-last">
     <xsl:param name="input" />
     <xsl:param name="marker" />

     <xsl:choose>
      <xsl:when test="contains($input,$marker)">
      <xsl:call-template name="substring-after-last">
      <xsl:with-param name="input" 
          select="substring-after($input,$marker)" />
      <xsl:with-param name="marker" select="$marker" />
      </xsl:call-template>
     </xsl:when>
     <xsl:otherwise>
     <xsl:value-of select="$input" />
     </xsl:otherwise>
     </xsl:choose>

     </xsl:template>


     <xsl:template name="substring-before-last">
     <xsl:param name="input" />
     <xsl:param name="marker" />

     <xsl:choose>
     <xsl:when test="contains($input,$marker)">
      <xsl:call-template name="substring-before-last">
      <xsl:with-param name="input" 
          select="substring-before($input,$marker)" />
      <xsl:with-param name="marker" select="$marker" />
    </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
    <xsl:value-of select="$input" />
    </xsl:otherwise>
    </xsl:choose>

    </xsl:template>

    </xsl:transform>

下面是我的XML代码

<?xml version="1.0"?>
<?xml-stylesheet type= 'text/xsl' href = 'HNP.xsl'?>

<Report>
<PatDetails>
<Value>Patient Id:@9999</Value></PatDetails>

<Impression>
<Value>1. @Test1</Value></Impression>

<Impression>
<Value>2. @Test2</Value></Impression>

<Impression>
<Value>3. @Test3</Value></Impression>

<Impression>
<Value>4. @Test4</Value></Impression>

<Impression>
<Value>5. @Test5</Value></Impression>

<Impression>
<Value>6. @Test6</Value></Impression>

<Impression>
<Value>7. @Test7</Value></Impression>

<Impression>
<Value>8. @Test8</Value></Impression>

<Impression>
<Value>1. @Test1</Value></Impression>

<Impression>
<Value>2. @Test2</Value></Impression>

<Impression>
<Value>3. @Test3</Value></Impression>

<Impression>
<Value>4. @Test4</Value></Impression>

<Impression>
<Value>5. @Test5</Value></Impression>

<Impression>
<Value>6. @Test6</Value></Impression>

<Impression>
<Value>7. @Test7</Value></Impression>

<Impression>
<Value>8. @Test8</Value></Impression>


<Impression>
<Value>1. @Test1</Value></Impression>

<Impression>
<Value>2. @Test2</Value></Impression>

<Impression>
<Value>3. @Test3</Value></Impression>

<Impression>
<Value>4. @Test4</Value></Impression>

<Impression>
<Value>5. @Test5</Value></Impression>

<Impression>
<Value>6. @Test6</Value></Impression>

<Impression>
<Value>7. @Test7</Value></Impression>

<Impression>
<Value>8. @Test8</Value></Impression>

</Report>

我不确定您到底想做什么,但您似乎需要阅读有关 XSLT 的内容。首先,您需要记住,所有内容都需要添加到 HTML 标签中,以便以您想要的样式或位置显示。其次,您需要知道在引用特定 XML 标签时指向何处。这是您重写 XSLT 的幼稚尝试,将其放在一个新的 xsl:stylesheet 标记中并按照步骤理解此尝试。

<xsl:template match="/">
   <html>
      <head>
         <title><xsl:value-of select="PatDetails"/></title>
      </head>
      <body>
           <xsl:apply-templates/>
      </body>   
   </html>
</xsl:template>

<xsl:template match="PatDetails/Value">
    <h1><xsl:value-of select="."/></h1>
</xsl:template>


<xsl:template match="Impression/Value">
  <table border="1">
   <tr><td>                
     <xsl:for-each select=".">
         <xsl:value-of select="."/>
     </xsl:for-each>
   </td></tr>
  </table>
</xsl:template>

XSLT 代码

    <head>

<title>


                        <xsl:call-template name="string-replace">
                            <xsl:with-param name="arg" select="Report/PatDetails"/>
                            <xsl:with-param name="toReplace" select="'^'"/>
                        </xsl:call-template>


</title>

</head>