On 18 January 2016 at 21:16, Hans Hagen
On 1/18/2016 9:49 PM, Kate F wrote:
On 18 January 2016 at 19:13, Hans Hagen
wrote: On 1/18/2016 5:22 PM, Kate F wrote:
On 18 January 2016 at 13:30, Thomas A. Schmitz
wrote: On 01/17/2016 07:24 PM, Hans Hagen wrote:
it should work in the in beta now
Hi Hans,
now I have a problem :-) What should take precedence if an entity is both defined in the dtd and as a \xmltexentity? The way I see it, the latter: e.g., in the DTD, I might declare something for use in a browser but require a different solution when typesetting with ConTeXt. The latest and greatest now takes my DTD definitions instead of the \xmltexentities, which did not happen before. Is that an unwanted side effect or the new default?
Ah, there's a bug:
<!ENTITY i.opt "<option>-i</option>">
This should produce an <option> node in the DOM tree, just as if you'd typed that out where the entity is used. Currently ConTeXt takes that as literal text, as if you'd typed "<option>-i<option/>"
Often I wish XML weren't so complex...
are you sure? i've never seen that
Hans
Yep!
These are called "internal parsed entities". "Parsed" requires that any tags *inside* the entity must be balanced, unlike in SGML entities.
Sorry I can't find a clear explanation in the XML spec; it's a pretty confusing document. But here's some random person's slide illustrating an example: http://images.slideplayer.com/23/6622270/slides/slide_47.jpg
libxml2 deals with these correctly, which is what I've been using (xsltproc and friends) for my documents which use them. I generally trust libxml2 to get things right.
I use these entities to centralise often-repeated fragments between documents, kind of like how you might use a primitive macro in TeX.
So for example in one external DTD I have some general things:
<!ENTITY macro.arg "<replaceable>macro</replaceable>"> <!ENTITY equal.lit "<literal>=</literal>">
And then in one specific document's internal entities, something which uses them:
"<option>-D</option>¯o.arg;&equal.lit;<replaceable>defn</replaceable>">
Then if I change my mind about how I want to mark up "=", for example, I only have one place to change it. This makes life with XML a little bit less painful.
well, i've learned not to trust all these docs on the web too much and applications can do what they want (and thereby even influence standards)
xml pocket reference:
- parsed entity: replacement text that can be referenced
internal: literal string to be injected (then the example shows only text and entities
in your example you use a (decimal) character entity ... the link you give says that you cannot use & and % as part of the entities value so that would mean your example is wrong
Indeed I did not mean that somebody's presentation slides are normative. This is normative for XML 1.0: https://www.w3.org/TR/1998/REC-xml-19980210#wf-entities Which has the following productions: extParsedEnt ::= TextDecl? content content ::= (element | CharData | Reference | CDSect | PI | Comment)* So you can see that both elements (by "element") and entity references (by "Reference") are permitted in the grammar. The latter includes: Reference ::= EntityRef | CharRef EntityRef::='&' Name ';' Per this, all my examples are correct. O'Reilly XML in a Nutshell has an example: http://docstore.mik.ua/orelly/xml/xmlnut/ch03_04.htm
of course we can consider an option to parse the entity as xml
(we can consider < as a trigger for parsing thereby kin dof automatically adapting)
I do not think this is a good idea - per the XML spec, these entities should always be taken as well-formed fragments of XML. So treating them otherwise would be incorrect. Thanks, -- Kate