Search code examples
xmlxmllint

What's the output format of xmllint ls?


Using xmllint --shell, I execute

chapter > cat * 
 -------
<title>Getting to Know Penguins</title>
 -------
<abstract>
      <para>Penguins are cute.</para>
    </abstract>
 -------
<sect1>
      <title>The Head</title>
      <para>...</para>
    </sect1>
 -------
<sect1 id="penguin.coat">
      <title>The Coat</title>
      <para>...</para>
    </sect1>

and

chapter > ls
ta-        5      
---        1 title
ta-        5      
---        3 abstract
ta-        5      
---        5 sect1
ta-        5      
c--       17 
ta-        5      
-a-        5 sect1
ta-        3  

What does "ta", "c" and "a" stand for, and what do the characters represent?


Solution

  • The answer you seek is available in the following location:

    libxml2-2.9.0::debugXML.c:1652: xmlLsOneNode(FILE *output, xmlNodePtr node)

    I've broken the output down by node type, please note that the second two characters below are shown as "--" for convenience. In actuality, for all node types other than XML_NAMESPACE_DECL, the second character is "a" if node->properties is not NULL and the third character is "n" if node->nsDef is not NULL. Finally, #NC# suggests a digit value for the number of children that node has while #CL# is a digit value for the length of the content of the node.

    XML_ELEMENT_NODE:
    ---     #NC# [[(node->ns->prefix):](node->name)]
    
    XML_ATTRIBUTE_NODE:
    a--     #NC# [(node->name)]
    
    XML_TEXT_NODE:
    t--     #CL# [xmlDebugDumpString(node->content)...|"(NULL)"]
        * The string value of content up to at most 40 characters with some
        * substitutions.  A space (' ') replaces the whitespace characters
        * allowed by the XML RFC: (0x20, 0x9, 0xA, 0xD).  Any character whose
        * HEX value is 0x80 or greater is printed as a string: "#XXXX"
    
    
    XML_CDATA_SECTION_NODE:
    C--     #CL#
    
    XML_ENTITY_REF_NODE:
    e--     1 [(node->name)]
    
    XML_ENTITY_NODE:
    E--     1 [(node->name)]
    
    XML_PI_NODE:
    p--     #CL#
    
    XML_COMMENT_NODE:
    c--     #CL#
    
    XML_DOCUMENT_NODE:
    d--     #NC#
    
    XML_HTML_DOCUMENT_NODE:
    h--     #NC#
    
    XML_DOCUMENT_TYPE_NODE:
    T--     1
    
    XML_DOCUMENT_FRAG_NODE:
    F--     1
    
    XML_NOTATION_NODE:
    N--     1
    
    XML_NAMESPACE_DECL:
    n       1 [(node->prefix)|"default"] -> (node->href)
    
    default:
    ?--     1