提问人:vascobnunes 提问时间:11/18/2023 更新时间:11/18/2023 访问量:13
如何使用自定义脚本在生成的文档中正确放置超链接?
How to properly place Hyperlinks in generated document using a custom script?
问:
我正在尝试使用自定义脚本在生成的文档中放置一个超链接,因为该链接需要由脚本获取。
我在自定义脚本中生成 XML,如下所示:
(...)
var thegeneratedURL = "https://www.google.com"
var thelinktext = "test"
var xmlCommitID = xmlDOM.createElement("CommitID-Hyperlink");
var commitIdLink = xmlDOM.createElement("a");
commitIdLink.setAttribute("href", thegeneratedURL);
var commitIdText = xmlDOM.createTextNode(thelinktext);
commitIdLink.appendChild(commitIdText);
xmlCommitID.appendChild(commitIdLink);
xmlRow.appendChild(xmlCommitID);
return xmlDOM.xml;
...并插入自定义字段
但是,当我生成文档时,链接文本很好,但 URL 不是:
有人知道我错过了什么吗?
谢谢!!
答:
-1赞
gfarkasd
11/18/2023
#1
我会使用 formatted=“1” 属性和一个简单的 html 超链接作为字符串来做到这一点(所以我不会用 xml 节点对象来组装它)。 关于 formatted=“1”: https://sparxsystems.com/enterprise_architect_user_guide/14.0/model_publishing/example_output_of_an_rtf_templ.html 的文档(在底部的“注释”部分) 另外,我不确定“CommitID-Hyperlink”-“CommitID.Hyperlink”转换是否正常工作,所以我会尝试使用不带 - 或 .角色 - 至少一开始是这样。
法兰兹
1赞
Geert Bellekens
11/20/2023
#2
这是我使用的代码,用于直接链接到 EA 模型的 html 导出上的图表 url
function getRTFData(diagram, baseUrl)
dim diagramUrl
diagramUrl = getDiagramLink(diagram, baseUrl)
dim xmlDOM
set xmlDOM = CreateObject( "Microsoft.XMLDOM" )
'set xmlDOM = CreateObject( "MSXML2.DOMDocument.4.0" )
xmlDOM.validateOnParse = false
xmlDOM.async = false
dim node
set node = xmlDOM.createProcessingInstruction( "xml", "version='1.0'")
xmlDOM.appendChild node
'
dim xmlRoot
set xmlRoot = xmlDOM.createElement( "EADATA" )
xmlDOM.appendChild xmlRoot
dim xmlDataSet
set xmlDataSet = xmlDOM.createElement( "Dataset_0" )
xmlRoot.appendChild xmlDataSet
dim xmlData
set xmlData = xmlDOM.createElement( "Data" )
xmlDataSet.appendChild xmlData
dim xmlRow
set xmlRow = xmlDOM.createElement( "Row" )
xmlData.appendChild xmlRow
dim formattedAttr
set formattedAttr = xmlDOM.createAttribute("formatted")
formattedAttr.nodeValue="1"
dim xmldiagramLink
set xmldiagramLink = xmlDOM.createElement( "DiagramLink" )
xmldiagramLink.text = "<a href=""$inet://" & diagramUrl &"""><font color=""#0000ff""><u>" & diagram.Name & "</u></font></a>"
xmldiagramLink.setAttributeNode(formattedAttr)
xmlRow.appendChild xmldiagramLink
getRTFData = xmlDOM.xml
end function
function getDiagramLink(diagram, baseUrl)
dim link
link = baseUrl & "/?guid="
'get diagram GUID
link = link & diagram.DiagramGUID
'remove braces
link = replace(link, "{","")
link = replace(link, "}","")
'return
getDiagramLink = link
end function
function getObjectDiagramLink(objectID, baseUrl)
dim element
set element = Repository.GetElementByID(objectID)
'get diagram
dim diagram
set diagram = getFirstDiagram(element)
'get the xml data
getObjectDiagramLink = getRTFData(diagram, baseUrl)
end function
function getFirstDiagram(diagramOwner)
set getFirstDiagram = nothing 'initialize
'get first diagram
dim diagram as EA.Diagram
for each diagram in diagramOwner.Diagrams
set getFirstDiagram = diagram
exit function
next
end function
此代码在脚本片段中使用,如下所示:
getObjectDiagramLink(#OBJECTID#, "https://urlToHTMLExport.com")
它会生成如下所示的链接:
https://urlToHTMLExport.com/?guid=B79FA03B-33F3-46b7-8F97-3DDE8E653753
并显示图表的名称。
评论
0赞
vascobnunes
11/20/2023
您使用的 html 链接格式对我有用!多谢!!
评论