Difference between revisions of "Quote indicates source.odd"
Jump to navigation
Jump to search
(added ODD snipett for adding cit= and ref= to <quote>) |
m (oops -- add category) |
||
| Line 109: | Line 109: | ||
</elementSpec> | </elementSpec> | ||
</schemaSpec></nowiki></pre> | </schemaSpec></nowiki></pre> | ||
| + | [[Category:Customization]] | ||
Revision as of 02:42, 23 April 2012
See this post and the rest of the thread it initiated for information on what this snippet does and why.
<!-- fragment of ODD (wrapped in a <schemaSpec> just to hold -->
<!-- namespace declarations) that adds a cit= attribute and a -->
<!-- ref= attribute to <quote> -->
<!-- Copyleft 2008 Syd Bauman and the Brown University Women -->
<!-- Writers Project -->
<schemaSpec ident="source-references-for-quote-element"
xmlns:rng="http://relaxng.org/ns/structure/1.0"
xmlns:isosch="http://purl.oclc.org/dsdl/schematron"
xmlns:sch="http://www.ascc.net/xml/schematron"
xmlns="http://www.tei-c.org/ns/1.0" xml:lang="en">
<!-- Add cit= and ref= to <quote> -->
<elementSpec module="core" ident="quote" mode="change">
<content>
<rng:ref name="macro.specialPara"/>
</content>
<constraintSpec scheme="schematron" ident="quotation_pointers_1.5">
<constraint>
<sch:pattern name="cit-should-point-to-bibl">
<sch:rule context="quote[starts-with(@cit,'#')]">
<sch:assert test="//bibl[@xml:id=substring-after(current()/@cit,'#')]">cit= attribute of
<gi><sch:name/></gi> does not point to a <gi>bibl</gi>.</sch:assert>
</sch:rule>
<sch:rule context="quote[contains(@cit,'#')]">
<sch:assert
test="document(substring-before(@cit,'#'))//bibl[@xml:id=substring-after(current()/@cit,'#')]">cit=
attribute of <gi><sch:name/></gi> does not point to
a <gi>bibl</gi>.</sch:assert>
</sch:rule>
<sch:rule context="quote[@cit]">
<sch:report test="not(contains(@cit,'#'))">cit= attribute of <gi><sch:name/></gi> must
point to particular <gi>bibl</gi> element via its xml:id=</sch:report>
</sch:rule>
</sch:pattern>
<sch:pattern name="ref-should-point-to-biblX">
<sch:rule context="quote[starts-with(@ref,'#')]">
<sch:assert test="//*[@xml:id=substring-after(current()/@ref,'#')][starts-with(local-name(.),'bibl')]">ref= attribute of <gi><sch:name/></gi> does not point to a <gi>bibl</gi>,
<gi>biblStruct</gi>, or <gi>biblFull</gi>.</sch:assert>
</sch:rule>
<sch:rule context="quote[contains(@ref,'#')]">
<sch:assert test="document(substring-before(@ref,'#'))//*[@xml:id=substring-after(current()/@ref,'#')][starts-with(local-name(.),'bibl')]">ref= attribute of <gi><sch:name/></gi> does not point to a <gi>bibl</gi>,
<gi>biblStruct</gi>, or <gi>biblFull</gi>.</sch:assert>
</sch:rule>
<sch:rule context="quote[@ref]">
<sch:report test="not(contains(@ref,'#'))">ref= attribute of <gi><sch:name/></gi> must
point to particular <gi>bibl</gi>, <gi>biblStruct</gi>, or
<gi>biblFull</gi> element via its xml:id=</sch:report>
</sch:rule>
</sch:pattern>
</constraint>
</constraintSpec>
<constraintSpec scheme="isoschematron" ident="quotation_pointers">
<constraint>
<isosch:pattern>
<isosch:rule context="quote[starts-with(@cit,'#')]">
<isosch:assert test="//bibl[@xml:id=substring-after(current()/@cit,'#')]">cit= attribute of
<gi><isosch:name/></gi> does not point to a <gi>bibl</gi>.</isosch:assert>
</isosch:rule>
<isosch:rule context="quote[contains(@cit,'#')]">
<isosch:assert
test="document(substring-before(@cit,'#'))//bibl[@xml:id=substring-after(current()/@cit,'#')]">cit=
attribute of <gi><isosch:name/></gi> does not point to
a <gi>bibl</gi>.</isosch:assert>
</isosch:rule>
<isosch:rule context="quote[@cit]">
<isosch:report test="not(contains(@cit,'#'))">cit= attribute of <gi><isosch:name/></gi> must
point to particular <gi>bibl</gi> element via its xml:id=</isosch:report>
</isosch:rule>
</isosch:pattern>
<isosch:pattern>
<isosch:rule context="quote[starts-with(@ref,'#')]">
<isosch:assert test="//*[@xml:id=substring-after(current()/@ref,'#')][starts-with(local-name(.),'bibl')]">ref= attribute of <gi><isosch:name/></gi> does not point to a <gi>bibl</gi>,
<gi>biblStruct</gi>, or <gi>biblFull</gi>.</isosch:assert>
</isosch:rule>
<isosch:rule context="quote[contains(@ref,'#')]">
<isosch:assert test="document(substring-before(@ref,'#'))//*[@xml:id=substring-after(current()/@ref,'#')][starts-with(local-name(.),'bibl')]">ref= attribute of <gi><isosch:name/></gi> does not point to a <gi>bibl</gi>,
<gi>biblStruct</gi>, or <gi>biblFull</gi>.</isosch:assert>
</isosch:rule>
<isosch:rule context="quote[@ref]">
<isosch:report test="not(contains(@ref,'#'))">ref= attribute of <gi><isosch:name/></gi> must
point to particular <gi>bibl</gi>, <gi>biblStruct</gi>, or
<gi>biblFull</gi> element via its xml:id=</isosch:report>
</isosch:rule>
</isosch:pattern>
</constraint>
</constraintSpec>
<attList>
<attDef ident="cit" mode="add" usage="opt">
<gloss>prose citation reference</gloss>
<desc>points to (one or more) bibliographic citation(s)
for this quotation as they appear in the source</desc>
<datatype minOccurs="1" maxOccurs="unbounded">
<rng:ref name="data.pointer"/>
</datatype>
</attDef>
<attDef ident="ref" mode="add" usage="opt">
<gloss>formal citation reference</gloss>
<desc>points to (one or more) complete modern
bibliographic citation(s) for this quotation, typically
stored in a <gi>listBibl</gi> in the project
bibliography</desc>
<datatype minOccurs="1" maxOccurs="unbounded">
<rng:ref name="data.pointer"/>
</datatype>
</attDef>
</attList>
</elementSpec>
</schemaSpec>