DTD required elements ordering

前端 未结 4 2119
清酒与你
清酒与你 2020-12-17 16:05

I want to have list of required elements in any order defined in dtd, but have no idea how I could do this.

For example, I have following definition:



        
4条回答
  •  我在风中等你
    2020-12-17 16:52

    ChrisF is wrong to say you can't do this (but kudos for checking the spec!); DevNull [now known as Daniel Haley] is right to say you can.

    There is, however, one complication: the content model given by DevNull for parent violates the determinism rules of XML. Informally, these rules say the parser must know, without lookahead, which token in the content model each element in the document matches. If in a parent element the parser sees a child1, it can't know without lookahead whether it has just matched the first or second occurrence of child1 in DevNull's content model. This is an error (but as it happens it's an error that processors are not obligated to report -- it's an error that means "all bets are off, the processor may do anything here, including fail to notice anything is wrong").

    A content model for parent that obeys the determinism rules can be formed by factoring out common prefixes, thus:

    
    

    This is less convenient than declarations for this model can be in other schema languages, and for more than three elements it's error prone and extremely tedious to do by hand. But it's not impossible to declare the content model you want with DTDs. Or perhaps I should say it's impossible only for DTD authors who are incapable of putting up with any inconvenience.

    Note also that unless the sequence of children carries some information, some design authorities argue strongly that it's better to fix a sequence.

提交回复
热议问题