← Prev in month ← Prev in thread
Next in thread → Next in month →

Fwd: [dita-lightweight-dita] Class values in markdown and HTML

From
Kristen James Eberlein <>
Date
2019-04-30T02:34:14+00:00
ID
Thread
Fwd: [dita-lightweight-dita] Class values in markdown and HTML
Forwarding to the TC. This was discussed at the LwDITA
      subcommittee meeting today, and it will be on tomorrow's agenda.

    

    
Best,

      Kris

      

      Kristen James Eberlein

      Chair, OASIS DITA Technical Committee

      Principal consultant, Eberlein Consulting

      www.eberleinconsulting.com

      +1 919 622-1501; kriseberlein (skype)

      

    

    

      

      -------- Forwarded Message --------
      
        
          

            Subject:
            
            [dita-lightweight-dita] Class values in markdown and
              HTML
          

          

            Date: 
            Fri, 26 Apr 2019 16:46:53 -0400
          

          

            From: 
            Michael Priestley <>
          

          

            To: 
            
          

        
      
      

      

      I went back and looked at the
        actual limits
        on class values in HTML5, and they're pretty restrictive:

      https://www.w3schools.com/tags/att_global_class.asp

      

      To summarize:

      
        
Must begin with a letter
            A-Z or a-z

        
Can be followed by: letters
            (A-Za-z),
            digits (0-9), hyphens ("-"), and underscores ("_")

        
Multiple values separated
            by spaces

      
      

      So just copying over the XML
        syntax
        won't be valid, as I read it. It might work, in a forgiving
        browser, but
        it wouldn't be valid (slashes, +/1 signs...)

      

      So then: what's the minimum
        information
        we need to have?

      

      - the specialized element name

      - ancestor element names, if
        there's
        a possibility of multiple levels, and rules we want to fire on
        an element
        based on ancestry

      - a token to distinguish DITA
        class
        values from others

      

      So we might get something like:

      

      /start of proposal

      

      XDITA specialization:

      <prologtitle class="-
        topic/title
        mybook/prologtitle" outputclass="intro important">Header
        1</prolog-title>

      

      HDITA specialization:

      <h1 class="intro important
        dita-prologtitle">Header
        1</h1>

      

      MDITA specialization:

      # Header 1

      {: .intro .important
        .dita-prologtitle}

      

      If the prologtitle element I just
        invented
        had an intermediate ancestor (let's say chaptertitle, instead of
        being
        specialized directly from topic title), that could be expressed
        as another
        "dita-" value:

      

      XDITA: 

        <prologtitle class="- topic/title thisbook/chaptertitle
        mybook/prologtitle"
        outputclass="intro important">Header 1</prolog-title>

      

      HDITA: 

        <h1 class="intro important dita-chaptertitle
        dita-prologtitle">Header
        1</h1>

      

      MDITA: 

        # Header 1 

        {: .intro .important .dita-chaptertitle .dita-prologtitle}

      

      The sequence of the dita- values
        (ignoring
        any values that don't start with dita- ) gives us the
        specialization hierarchy
        for the element, except for the base element (topic/title),
        which we get
        from the HTML element name <h1> and the base-level
        mappings from
        <h1> to <title>.

      

      /end of proposal

      

      So what are we losing?

      

      We don't know if it's a domain or
        a
        structural specialization, but do we care? That's only really
        useful for
        full generalization rules.

      

      We're also losing the module name
        part
        of the specialization token - eg if prologtitle is specialized
        as part
        of a mybook specialization, the token in XML would be
        mybook/prologtitle.
        But I'm thinking the module name (the structural or domain
        specialization
        label) is really only useful to prevent a naming collision if
        there's two
        elements with the same name that somehow end up in the same
        document. That's
        an extreme edge case at this point, and I don't think it's worth
        adding
        complexity to the syntax in markdown and HTML5, especially since
        the /
        isn't allowed and we'd need to use a hyphen or underscore.

      

      So if people want to do full
        generalization,
        they'd need to transform the document to an XML flavour first,
        and have
        a DTD defined for it there that provided the appropriate
        specialization
        syntax in defaulted attributes, the good old fashioned DITA way.
      

      

      For simple generalization (like
        during
        a conref pulling mybook/prologtitle into thisbook/chaptertitle),
        you'd
        just compare the tokens and their sequence without the module
        names - in
        other words an HDITA, Markdown, or XDITA specialized element
        "chaptertitle"
        could pull in an HDITA or Markdown,specialized element
        "prologtitle"
        because it has "dita-chaptertitle"  as a value in its class
        attribute, and we know it's an ancestor value because it's not
        the rightmost
        "dita-"  value in the attribute.

      

        Michael Priestley, Senior Technical Staff Member (STSM)

        Product Owner, Content AI and Classification Systems, IBM
        Marketing/IBM
        Digital

        
← Prev in month ← Prev in thread
Next in thread → Next in month →