File: doctype.coffee

package info (click to toggle)
node-xml2js 0.4.23%2B~cs15.4.0%2Bdfsg-8
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 1,380 kB
  • sloc: xml: 117; javascript: 7; makefile: 2
file content (139 lines) | stat: -rw-r--r-- 6,212 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
suite 'Document Type Declaration:', ->
  test 'SYSTEM dtd from create()', ->
    eq(
      xml('root', { sysID: 'hello.dtd' }).ele('node').txt('test').end()
      '<?xml version="1.0"?><!DOCTYPE root SYSTEM "hello.dtd"><root><node>test</node></root>'
    )

  test 'Public dtd from create()', ->
    eq(
      xml('HTML', {
        pubID: '-//W3C//DTD HTML 4.01//EN'
        sysID: 'http://www.w3.org/TR/html4/strict.dtd'
      }).end()
      '<?xml version="1.0"?>' +
      '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" ' +
                            '"http://www.w3.org/TR/html4/strict.dtd">' +
      '<HTML/>'
    )

  test 'Empty dtd from create()', ->
    eq(
      xml('root', { sysID: '' }).ele('node').txt('test').end()
      '<?xml version="1.0"?><!DOCTYPE root><root><node>test</node></root>'
    )

  test 'Replace dtd', ->
    eq(
      xml('root').dtd('hello.dtd').up().ele('node').txt('test').dtd('bye.dtd').end()
      '<?xml version="1.0"?><!DOCTYPE root SYSTEM "bye.dtd"><root><node>test</node></root>'
    )

  test 'Internal and external dtd', ->
    eq(
      xml('root')
          .dtd('hello.dtd')
              .ins('pub_border', 'thin')
              .ele('img', 'EMPTY')
              .com('Image attributes follow')
              .att('img', 'height', 'CDATA', '#REQUIRED')
              .att('img', 'visible', '(yes|no)', '#DEFAULT', "yes")
              .not('fs', { sysID: 'http://my.fs.com/reader' })
              .not('fs-nt', { pubID: 'FS Network Reader 1.0' })
              .not('fs-nt', { pubID: 'FS Network Reader 1.0', sysID: 'http://my.fs.com/reader' })
              .att('img', 'src', 'NOTATION (fs|fs-nt)', '#REQUIRED')
              .dat('<owner>John</owner>')
              .ele('node')
              .ent('ent', 'my val')
              .ent('ent', { sysID: 'http://www.myspec.com/ent' })
              .ent('ent', { pubID: '-//MY//SPEC ENT//EN', sysID: 'http://www.myspec.com/ent' })
              .ent('ent', { sysID: 'http://www.myspec.com/ent', nData: 'entprg' })
              .ent('ent', { pubID: '-//MY//SPEC ENT//EN', sysID: 'http://www.myspec.com/ent', nData: 'entprg' })
              .pent('ent', 'my val')
              .pent('ent', { sysID: 'http://www.myspec.com/ent' })
              .pent('ent', { pubID: '-//MY//SPEC ENT//EN', sysID: 'http://www.myspec.com/ent' })
              .ele('nodearr', ['a', 'b'])
          .root()
          .ele('node').txt('test')
          .end()

      '<?xml version="1.0"?>' +
      '<!DOCTYPE root SYSTEM "hello.dtd" [' +
          '<?pub_border thin?>' +
          '<!ELEMENT img EMPTY>' +
          '<!-- Image attributes follow -->' +
          '<!ATTLIST img height CDATA #REQUIRED>' +
          '<!ATTLIST img visible (yes|no) "yes">' +
          '<!NOTATION fs SYSTEM "http://my.fs.com/reader">' +
          '<!NOTATION fs-nt PUBLIC "FS Network Reader 1.0">' +
          '<!NOTATION fs-nt PUBLIC "FS Network Reader 1.0" "http://my.fs.com/reader">' +
          '<!ATTLIST img src NOTATION (fs|fs-nt) #REQUIRED>' +
          '<![CDATA[<owner>John</owner>]]>' +
          '<!ELEMENT node (#PCDATA)>' +
          '<!ENTITY ent "my val">' +
          '<!ENTITY ent SYSTEM "http://www.myspec.com/ent">' +
          '<!ENTITY ent PUBLIC "-//MY//SPEC ENT//EN" "http://www.myspec.com/ent">' +
          '<!ENTITY ent SYSTEM "http://www.myspec.com/ent" NDATA entprg>' +
          '<!ENTITY ent PUBLIC "-//MY//SPEC ENT//EN" "http://www.myspec.com/ent" NDATA entprg>' +
          '<!ENTITY % ent "my val">' +
          '<!ENTITY % ent SYSTEM "http://www.myspec.com/ent">' +
          '<!ENTITY % ent PUBLIC "-//MY//SPEC ENT//EN" "http://www.myspec.com/ent">' +
          '<!ELEMENT nodearr (a,b)>' +
      ']>' +
      '<root><node>test</node></root>'
    )

  test 'Internal and external dtd (pretty print)', ->
    eq(
      xml('root')
          .dtd('hello.dtd')
              .ins('pub_border', 'thin')
              .ele('img', 'EMPTY')
              .com('Image attributes follow')
              .att('img', 'height', 'CDATA', '#REQUIRED')
              .att('img', 'visible', '(yes|no)', '#DEFAULT', "yes")
              .not('fs', { sysID: 'http://my.fs.com/reader' })
              .not('fs-nt', { pubID: 'FS Network Reader 1.0', sysID: 'http://my.fs.com/reader' })
              .att('img', 'src', 'NOTATION (fs|fs-nt)', '#REQUIRED')
              .dat('<owner>John</owner>')
              .ele('node')
              .ent('ent', 'my val')
              .ent('ent', { sysID: 'http://www.myspec.com/ent' })
              .ent('ent', { pubID: '-//MY//SPEC ENT//EN', sysID: 'http://www.myspec.com/ent' })
              .ent('ent', { sysID: 'http://www.myspec.com/ent', nData: 'entprg' })
              .ent('ent', { pubID: '-//MY//SPEC ENT//EN', sysID: 'http://www.myspec.com/ent', nData: 'entprg' })
              .pent('ent', 'my val')
              .pent('ent', { sysID: 'http://www.myspec.com/ent' })
              .pent('ent', { pubID: '-//MY//SPEC ENT//EN', sysID: 'http://www.myspec.com/ent' })
          .root()
          .ele('node').txt('test')
          .end({ pretty: true })

      """
      <?xml version="1.0"?>
      <!DOCTYPE root SYSTEM "hello.dtd" [
        <?pub_border thin?>
        <!ELEMENT img EMPTY>
        <!-- Image attributes follow -->
        <!ATTLIST img height CDATA #REQUIRED>
        <!ATTLIST img visible (yes|no) "yes">
        <!NOTATION fs SYSTEM "http://my.fs.com/reader">
        <!NOTATION fs-nt PUBLIC "FS Network Reader 1.0" "http://my.fs.com/reader">
        <!ATTLIST img src NOTATION (fs|fs-nt) #REQUIRED>
        <![CDATA[<owner>John</owner>]]>
        <!ELEMENT node (#PCDATA)>
        <!ENTITY ent "my val">
        <!ENTITY ent SYSTEM "http://www.myspec.com/ent">
        <!ENTITY ent PUBLIC "-//MY//SPEC ENT//EN" "http://www.myspec.com/ent">
        <!ENTITY ent SYSTEM "http://www.myspec.com/ent" NDATA entprg>
        <!ENTITY ent PUBLIC "-//MY//SPEC ENT//EN" "http://www.myspec.com/ent" NDATA entprg>
        <!ENTITY % ent "my val">
        <!ENTITY % ent SYSTEM "http://www.myspec.com/ent">
        <!ENTITY % ent PUBLIC "-//MY//SPEC ENT//EN" "http://www.myspec.com/ent">
      ]>
      <root>
        <node>test</node>
      </root>
      """
    )