1

有没有办法使用 xforms 将标记的文本包装在元素中?例如:

在这个周围加上word 标签 --> 在这个<tag>词周围加上标签</tag>

我是 xforms 的新手,目前在存在数据库服务器上使用 Xsltxforms,我试图弄清楚我是否遗漏了某些东西,或者没有办法在 textarea 框中制作这样的东西。先感谢您!

4

2 回答 2

2

修改后的答案:一些可能的解决方案是将诸如 Rangy ( https://github.com/timdown/rangy ) 之类的库集成到 XSLTForms 中,或者甚至是诸如 TinyMCE 之类的富文本编辑器(XSLTForms 在此示例中所做的:http: //www.agencexml.com/xsltforms/tinymce.xml)。另一种选择是查看专为 TEI 设计的 Teian ( https://sourceforge.net/projects/teian/ ),但可能是朝着正确方向迈出的一步。

于 2016-03-15T21:23:31.757 回答
2

XForms Recommendation 中没有这种处理的机制。

但这已作为 XSLTForms 中的扩展添加:一个名为“xf:wrap”的额外操作允许指示要考虑控制以及要在选择之前和之后添加什么。

<?xml-stylesheet href="xsl/xsltforms.xsl" type="text/xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
<head>
    <title>Wrap Selection</title>
    <xf:model>
        <xf:instance>
            <data xmlns="">Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo.</data>
        </xf:instance>
    </xf:model>
</head>
<body>
    <xf:trigger>
        <xf:label>&lt;a&gt;</xf:label>
        <xf:wrap ev:event="DOMActivate" control="t" pre="&lt;a&gt;" post="&lt;/a&gt;"/>
    </xf:trigger>
    <xf:trigger>
        <xf:label>&lt;b&gt;</xf:label>
        <xf:wrap ev:event="DOMActivate" control="t" pre="&lt;b&gt;" post="&lt;/b&gt;"/>
    </xf:trigger>
    <xf:trigger>
        <xf:label>&lt;c&gt;</xf:label>
        <xf:wrap ev:event="DOMActivate" control="t" pre="&lt;c&gt;" post="&lt;/c&gt;"/>
    </xf:trigger>
    <br/>
    <xf:textarea id="t" ref="." incremental="true"/>
    <br/>
    <xf:output value=".">
        <xf:label>Value: </xf:label>
    </xf:output>
</body>
</html>

xf:setselection 操作还有另一种可能性:

<?xml-stylesheet href="xsl/xsltforms.xsl" type="text/xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
<head>
    <title>Set Selection</title>
    <xf:model>
        <xf:instance>
            <data xmlns="">Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium...</data>
        </xf:instance>
    </xf:model>
</head>
<body>
    <xf:trigger>
        <xf:label>&lt;span&gt;</xf:label>
        <xf:setselection ev:event="DOMActivate" control="t" value="concat('&lt;span start=&quot;', control-property('t', 'selectionStart'), '&quot; end=&quot;', control-property('t', 'selectionEnd'), '&quot;&gt;', selection('t'), '&lt;/span&gt;')"/>
    </xf:trigger>
    <br/>
    <xf:textarea id="t" ref="." incremental="true"/>
    <br/>
    <xf:output value=".">
        <xf:label>Value: </xf:label>
    </xf:output>
</body>
</html>

现场演示:http ://www.agencexml.com/direct/wrap/setselection.xml

你怎么看?

于 2016-03-15T11:51:18.780 回答