[oXygen-user] Schematron Quickfix - selection?
George Bina
george at oxygenxml.com
Tue Aug 22 04:28:16 CDT 2017
Hi Wendell,
You can use the content completion configuration file to control the
available values for an attribute using an XSLT that will generate the
values and the annotations for that attribute.
For example, let's say we have a document like:
<sample>
<a id="aid1"><desc>ID 1 of a</desc></a>
<a id="aid2"><desc>ID 2 of a</desc></a>
<a id="aid3"><desc>ID 3 of a</desc></a>
<b id="bid1"><desc>ID 1 of b</desc></b>
<b id="bid2"><desc>ID 2 of b</desc></b>
<b id="bid3"><desc>ID 3 of b</desc></b>
<aref ref="aid1"/>
<bref ref="bid1"/>
</sample>
and we want the aref/@ref to contain a/@id and not b/@id values. Then we
can do this by setting up a framework for our sample document and
provide a cc_config.xml file like
<?xml-model
href="http://www.oxygenxml.com/ns/ccfilter/config/ccConfigSchemaFilter.sch"
type="application/xml"
schematypens="http://purl.oclc.org/dsdl/schematron"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oxygenxml.com/ns/ccfilter/config
http://www.oxygenxml.com/ns/ccfilter/config/ccConfigSchemaFilter.xsd"
xmlns="http://www.oxygenxml.com/ns/ccfilter/config">
<!-- The contributed values are obtained by executing the given
XSLT -->
<match elementName="aref" attributeName="ref">
<xslt href="aids.xsl" useCache="false" action="replace"/>
</match>
</config>
with the referred aids.xsl containing
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl"
exclude-result-prefixes="xs xd"
version="2.0">
<xsl:param name="documentSystemID"/>
<xsl:template name="start">
<xsl:variable name="a" select="doc($documentSystemID)//a"/>
<items action="replace">
<xsl:apply-templates select="$a">
<xsl:sort select="./@id"/>
</xsl:apply-templates>
</items>
</xsl:template>
<xsl:template match="a">
<item
value="{@id}"
annotation="Refer to an a element with the ID {@id}
{./desc}"/>
</xsl:template>
</xsl:stylesheet>
Then, if we provide also a CSS for visual editing, we can edit IDs in
text fields and the references using drop downs. Such a CSS may look like
* {
display:block;
margin:1em;
padding:0.2em;
}
a {border:1px solid green;}
b {border:1px solid blue;}
desc {background-color:#FAFBF0;}
a:before, b:before {
content:
oxy_local-name() " ID: "
oxy_textfield(
edit, '@id',
columns, 40
)
}
aref:before {
content:
"Ref to a: "
oxy_combobox(
edit, '@ref',
editable, false
);
}
bref:before {
content:
"Ref to b: "
oxy_combobox(
edit, '@ref',
editable, false
);
}
This will provide both in text mode and in author mode support for
setting the correct values for aref/@ref, one of the available a/@id
values. Attached you can find a project with the samples and framework
already setup, open the controlledIDs.xpr project then if you edit the
sample.xml file you should notice the desired behavior for the aref/@ref
attribute.
Best Regards,
George
--
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
On 22/08/17 11:28, Oxygen XML Editor Support (Octavian Nadolu) wrote:
> Hello Wendell,
>
> This is not possible now.
> This functionality can be implemented either by generating quick fixes
> dynamically or using user entries.
>
> To generate the quick fixes dynamically you can set the "@use-for-each"
> attribute on the quick fix. You can generate a quick fix with a specific
> description for each id. There is an issue on SQF Github project that
> describes it: https://github.com/schematron-quickfix/sqf/issues/3.
> But this is not supported in current oXygen implementation. There is an
> issue on our issue tracker to implement it in a future version.
>
> Or you can create a quick fix that has an user entry that provides
> multiple values (the list of IDs that can be inserted). The user will
> see only one quick fix that will present a dialog with the list of IDs
> to be inserted.
> But this is also not supported in the current oXygen implementation.
>
> Best Regards,
> Octavian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: controlledIDs.zip
Type: application/x-zip-compressed
Size: 4548 bytes
Desc: not available
URL: <http://www.oxygenxml.com/pipermail/oxygen-user/attachments/20170822/6415cf29/attachment.bin>
More information about the oXygen-user
mailing list