[oXygen-user] Schematron Quickfix - selection?
Wendell Piez
wapiez at wendellpiez.com
Tue Aug 22 07:45:16 CDT 2017
Hi George, Octavian,
Many thanks for the responses and the ideas!
My project doesn't have a framework -- yet -- but it probably will
(perhaps sooner rather than later) so I am very grateful. Being able
to call an XSLT for content completion is indeed a very powerful
technique: thanks for showing how it's done.
Onward with Quickfixes - cheers,
Wendell
On Tue, Aug 22, 2017 at 5:28 AM, George Bina <george at oxygenxml.com> wrote:
> 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
>
>
> _______________________________________________
> oXygen-user mailing list
> oXygen-user at oxygenxml.com
> https://www.oxygenxml.com/mailman/listinfo/oxygen-user
>
--
Wendell Piez | http://www.wendellpiez.com
XML | XSLT | electronic publishing
Eat Your Vegetables
_____oo_________o_o___ooooo____ooooooo_^
More information about the oXygen-user
mailing list