将HTML锚点嵌入到使用SAS中的ODS HTML创建的标题中

时间:2014-07-25 15:05:34

标签: html sas

使用SAS中的ODS HTML,我想创建标题的锚点,以便我可以从表格中引用这些锚点。

目前我已经能够在表格中创建引用:

proc sql;
select '<a href="#'||m.anchor_text||'">'||m.anchor_text||'</a>'
  from matrix m;
quit;

在HTML浏览器输出中将显示为HTML文件的内部链接:

anchor1  <-- this is a href link to anchor1
anchor2  <-- this is a href link to anchor2

当我现在尝试创建实际数据表的锚点时:

title "<a name='anchor1'></a>Data on matrix1";
proc sql;
select * from matrix1;
quit;

标题不会将文本包装成锚点,而是显示完整的HTML代码:

<a name='anchor1'></a>Data on matrix1
(matrix1 data here)

如果我查看HTML代码,我可以看到标题字符被翻译为可在HTML中显示:

&lt;a name=&#39;anchor1&#39;&gt;&lt;/a&gt;Data on matrix1

但是如何在proc sql查询的标题中创建这样的HTML锚点,即将HTML标记嵌入到标题中?

3 个答案:

答案 0 :(得分:3)

您可以在此处选择一些选项,具体取决于您最常用的选项。

首先,您可以进入模板,并为每个标题元素的模板添加prehtml和/或posthtml条目。这意味着每次使用Title1时,您都会获得相同的锚标记(直到您重新proc template为止)。如果您希望title#始终拥有相同的锚,尽管有时会有可变文本,这将非常有用。

其次,您可以使用raw样式选项。 ^{raw <a href="#anchor1"></a>},假设您ods escapechar^。我相信你也可以使用^R/HTML{..}。请参阅文档和Cynthia Zender的经典论文Funny Stuff in My Code。如果每个标题都需要不同的锚点,那么这是更好的选择(因为您每次都可以指定它,但每次都需要指定它)。

第三,你可以使用第一个选项和一个宏变量,我相信(类似于你之前的contentitem的方式)定义了锚的值。这在理论上是更多的&#39;但可能是三者中最好的。

答案 1 :(得分:3)

在所有ODS HTML绑定输出中,您可以将HTML包装在<div>...</div>中,以确保SAS将其呈现为正确的HTML。

要创建锚点,请使用<a name='anchorname'></a>,所以:

title "<div><a name='anchor1'></a></div>" ;

并在页面的其他地方引用它:

Title "<div><a href='#anchor1'>Go to Anchor 1</a></div>" ;

答案 2 :(得分:2)

编辑:以下内容并未完全解决原始问题(我误解了),但对某些人可能仍然有用。正如Joe在评论中指出的那样,看起来SAS在如何处理title语句中的HTML锚标签方面有不同的方法。乔的回答是正确的。


我认为你的title语句中的锚标记语法不正确。这对我来说很好:

ods html;

title "<a href='dkjfkjdf.html'>Hello</html>";

proc print data=sashelp.class;
run;

ods html close;

Results:

我相信您需要的是将您的文字移动到锚标记内(并使用引号),如下所示:

title '<a href="#anchor1">Data on matrix1</a>';