如何使用自定义脚本在生成的文档中正确放置超链接?

How to properly place Hyperlinks in generated document using a custom script?

提问人:vascobnunes 提问时间:11/18/2023 更新时间:11/18/2023 访问量:13

问:

我正在尝试使用自定义脚本在生成的文档中放置一个超链接,因为该链接需要由脚本获取。

我在自定义脚本中生成 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; 

然后,我在相应的片段中调用脚本enter image description here

...并插入自定义字段

enter image description here

但是,当我生成文档时,链接文本很好,但 URL 不是:

enter image description here

有人知道我错过了什么吗?

谢谢!!

XML RTF 企业架构师

评论


答:

-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

并显示图表的名称。

enter image description here

评论

0赞 vascobnunes 11/20/2023
您使用的 html 链接格式对我有用!多谢!!