Open sydb opened 4 years ago
VF2F: Council greenlights a first stage of edits to clean up the prose, and then revisit to discuss what more may need to be done.
Council at VF2F suggests to clean up the typos and unclear explanations first. @raffazizzi, @ju -- please open separate issues if necessary.
@sydb's point 4.iii
“every declarable element must bear a unique identifier”
- Does this really mean every declarable element must have an
@xml:id
(which would be nuts, but is what it says), or does it mean every element of the same type (which would make a lot of sense and is what 15.3.3 number 3 sort of implies), or does it mean every element of the same type that has a sibling of that type?
I think it means what it says: every element must have an identifier. The bullet point that follows the one @sydb refers to indicates very specifically that a default should be indicated "for each different type of declarable element which occurs more than once within the same parent element". So, if the first bullet point meant elements of the same type it would have been as explicit as the second.
Having said that, I agree with @sydb that it's overkill to require ids everywhere and that it makes more sense to only enforce them for elements of the same type. But I think we need to discuss this as a group.
Otherwise, I'm working on the rest on a branch
VF2F agrees with adjusting the language so that not every declarable element must have @xml:id
. See new wording in branch.
Updated and merged branch. https://github.com/TEIC/TEI/commit/124531b7c099d3d99a708a6217d2fe545e4de3f6
Branch was very behind. Reverted merge and will try to fix the branch before attempting merge again
Merged in only prose changes (f4c625d783c10e710bbc36664ff640c1a7446736). @sydb to revise Schematron constraints soon.
@raffazizzi and I just had a long chat about this ticket. It is almost ready to be closed, but we cannot implement it because Schematron abstract patterns are not processed correctly in P5/antbuilder.xml (steps 8 & 9a only call iso_svrl_for_xslt2.xsl, but should call iso_dsdl_include.xsl and iso_abstract_expand.xsl, too).
So we should either
@context
of a rule be all the members of a class; OR@context
.Having thought about this a bit (not a lot) I have decided that I like (2) the best and (1) next; (4) is not really that much worse than (2) or (1), but feels a lot worse, so I don’t like it; and (3) is at least very very hard if not outright impossible (it doesn’t seem that hard when you are dealing with a single customization of a given language, but if you have a customization chain it would get out of hand, I think). So I am am planning to start poking at implementing (2) sometime.
I went to poke at antbuilder.xml a bit, and discovered (somewhat to my horror) that I have already implemented (1). However, it does not work, in that abstract patterns still cause problems. (The rest of the Schematron probably works fine, I did not test much. But the abstract patterns work so badly that the Guidelines won’t build.) So unless I did something wrong, (1) is not going to work, anyway.
I have now implemented (2), above, in branch issue1981bis. It passes all the current tests in a Docker environment. I have not actually checked in the abstract patterns for testing att.declarable, yet. (Remember, that was the reason we wanted to update the build process to use a more modern Schematron processor.) I encourage anyone and everyone to check out this branch and see if it builds on your system. The work so far is reflected in 31320225f.
I have implemented (2) — use mausatron (aka schxslt) as our Schematron processor so we can use abstract patterns; and also checked the constraints on att.declarable elements expressed using an abstract pattern. (See commit 6044db652.)
However, this ticket is blocked by #2455, because the output of the test for @default
is different depending on which version of rnv
you use.
As #2455 has now been dealt with, I have merged dev into branch issue1981bis (which was a lot of work). So I think this may be ready to merge. To be honest, I do not even remember where we are in actually getting better constraints for att.declaring and att.declarable. At this point, the main item of interest is that the branch for this ticket includes updating our build process from the Schematron Skeleton implementation to @dmj’s SchXslt
(which I call “mausatron”). That change is required for CMC to move forward.
@sydb I removed Status: Blocked since #2455 was resolved. I merged dev into issue1981bis without issue and pushed. Would you consider opening a PR?
@raffazizzi @sydb See this comment on the existing PR (#2509) , though: https://github.com/TEIC/TEI/pull/2509#issuecomment-2127923822
In May Council decided we needed to consult someone about fixing NVDL...I don't think that has happened yet?
This issue got orphaned a little, but it's not too late to update the branch. @ebeshero do you think we need more discussion or can I (or @sydb) attempt a PR? Marking as Pending for now.
Some of these issues are trivial; some may require tickets of their own.
#CCAH
) — disagreement in number: “The TEI scheme allow for the following …”.#CCAS2
is problematic.@xml:id
(which would be nuts, but is what it says), or does it mean every element of the same type (which would make a lot of sense and is what 15.3.3 number 3 sort of implies), or does it mean every element of the same type that has a sibling of that type?@default
specified as "true". Given that the former is precluded, I think the prose here should just be specific and say the latter: “… must be specified as the default by having a@default
attribute with the value "true"”.@xml:id
s of the divisions in question are "d1", "d3", and "d2".@decls
attribute …”: They are not identifiers; what is specified on@decls
are pointers (URIs, to be precise). Besides, it is not the values of@decls
that are restricted, but rather the things being pointed at by an@decls
.@decls
that points to A also points to a non-default child of A, that one applies instead.)for a text specifying <att>decls</att> as <q><val>ED2</val></q>, correction C2A, and normalization N2B will apply.
should be more likefor a text specifying <att>decls</att> as <val>#ED2</val>, correction C2A and normalization N2B will apply.
.#
characters.one only must bear a <att>default</att> attribute with the value <!-- JC: 2018-07-20: This should be changed to 'true' --><val>YES</val>.
): Obviously, @jamescummings is correct, as "YES" is not one of the possible values of@default
. (BTW, this is the only occurrence of either “YES” or “NO” as a word in the Guidelines.) But furthermore, I think the more standard wording (at least in American English) would be “one and only one must bear …”. Thus my suggestion isone and only one must bear a <att>default</att> attribute with the value <val>true</val> (or <val>1</val>).
.constraints for att.declarable
For validation, I think someday we would like a mechanism for building a list of elements from class membership dynamically at build time. Until then, we could make due with Schematron abstract rules.
In att.declarable.xml:
(Note that the declaration of the variable $declarableGI fails when I try this using probatron, but it works in oXygen. If you replace the variable reference with the value everywhere it works in both.)
And then in each element that has
<memberOf key="att.declarable"/>
(see below for the current list), something like the following:constraints for att.declaring
Probably in att.declaring.xml:
Note that if a local element (i.e., same file) pointed to by
@decls
is not found, it is simply ignored; if a remote element (i.e., different file) pointed to by@decls
is not found this does not fail gracefully, rather a 404 is raised.list of declarable elements
tei:availability | tei:bibl | tei:biblFull | tei:biblStruct | tei:broadcast | tei:correction | tei:correspDesc | tei:editorialDecl | tei:equipment | tei:geoDecl | tei:hyphenation | tei:interpretation | tei:langUsage | tei:listApp | tei:listBibl | tei:listEvent | tei:listNym | tei:listObject | tei:listOrg | tei:listPerson | tei:listPlace | tei:metDecl | tei:normalization | tei:particDesc | tei:projectDesc | tei:punctuation | tei:quotation | tei:recording | tei:refsDecl | tei:samplingDecl | tei:scriptStmt | tei:segmentation | tei:settingDesc | tei:sourceDesc | tei:stdVals | tei:styleDefDecl | tei:textClass | tei:textDesc | tei:xenoData