当我们使用 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"><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>
我想通过在所有页面中使用 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"><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>