sax 1.1.6 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/lib/sax.js +49 -58
- package/package.json +8 -6
- package/LICENSE-W3C.html +0 -188
package/README.md
CHANGED
|
@@ -168,6 +168,11 @@ would trigger this kind of event. This is a weird thing to support, so it
|
|
|
168
168
|
might go away at some point. SAX isn't intended to be used to parse SGML,
|
|
169
169
|
after all.
|
|
170
170
|
|
|
171
|
+
`opentagstart` - Emitted immediately when the tag name is available,
|
|
172
|
+
but before any attributes are encountered. Argument: object with a
|
|
173
|
+
`name` field and an empty `attributes` set. Note that this is the
|
|
174
|
+
same object that will later be emitted in the `opentag` event.
|
|
175
|
+
|
|
171
176
|
`opentag` - An opening tag. Argument: object with `name` and `attributes`.
|
|
172
177
|
In non-strict mode, tag names are uppercased, unless the `lowercase`
|
|
173
178
|
option is set. If the `xmlns` option is set, then it will contain
|
package/lib/sax.js
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
'sgmldeclaration',
|
|
28
28
|
'doctype',
|
|
29
29
|
'comment',
|
|
30
|
+
'opentagstart',
|
|
30
31
|
'attribute',
|
|
31
32
|
'opentag',
|
|
32
33
|
'closetag',
|
|
@@ -261,28 +262,14 @@
|
|
|
261
262
|
return Stream.prototype.on.call(me, ev, handler)
|
|
262
263
|
}
|
|
263
264
|
|
|
264
|
-
// character classes and tokens
|
|
265
|
-
var whitespace = '\r\n\t '
|
|
266
|
-
|
|
267
265
|
// this really needs to be replaced with character classes.
|
|
268
266
|
// XML allows all manner of ridiculous numbers and digits.
|
|
269
|
-
var number = '0124356789'
|
|
270
|
-
var letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
|
271
|
-
|
|
272
|
-
// (Letter | "_" | ":")
|
|
273
|
-
var quote = '\'"'
|
|
274
|
-
var attribEnd = whitespace + '>'
|
|
275
267
|
var CDATA = '[CDATA['
|
|
276
268
|
var DOCTYPE = 'DOCTYPE'
|
|
277
269
|
var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'
|
|
278
270
|
var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'
|
|
279
271
|
var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }
|
|
280
272
|
|
|
281
|
-
// turn all the string character sets into character class objects.
|
|
282
|
-
whitespace = charClass(whitespace)
|
|
283
|
-
number = charClass(number)
|
|
284
|
-
letter = charClass(letter)
|
|
285
|
-
|
|
286
273
|
// http://www.w3.org/TR/REC-xml/#NT-NameStartChar
|
|
287
274
|
// This implementation works on strings, a single character at a time
|
|
288
275
|
// as such, it cannot ever support astral-plane characters (10000-EFFFF)
|
|
@@ -291,31 +278,29 @@
|
|
|
291
278
|
// is left as an exercise for the reader.
|
|
292
279
|
var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/
|
|
293
280
|
|
|
294
|
-
var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040
|
|
281
|
+
var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/
|
|
295
282
|
|
|
296
283
|
var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/
|
|
297
|
-
var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040
|
|
284
|
+
var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/
|
|
298
285
|
|
|
299
|
-
|
|
300
|
-
|
|
286
|
+
function isWhitespace (c) {
|
|
287
|
+
return c === ' ' || c === '\n' || c === '\r' || c === '\t'
|
|
288
|
+
}
|
|
301
289
|
|
|
302
|
-
function
|
|
303
|
-
return
|
|
304
|
-
s[c] = true
|
|
305
|
-
return s
|
|
306
|
-
}, {})
|
|
290
|
+
function isQuote (c) {
|
|
291
|
+
return c === '"' || c === '\''
|
|
307
292
|
}
|
|
308
293
|
|
|
309
|
-
function
|
|
310
|
-
return
|
|
294
|
+
function isAttribEnd (c) {
|
|
295
|
+
return c === '>' || isWhitespace(c)
|
|
311
296
|
}
|
|
312
297
|
|
|
313
|
-
function
|
|
314
|
-
return
|
|
298
|
+
function isMatch (regex, c) {
|
|
299
|
+
return regex.test(c)
|
|
315
300
|
}
|
|
316
301
|
|
|
317
|
-
function
|
|
318
|
-
return !
|
|
302
|
+
function notMatch (regex, c) {
|
|
303
|
+
return !isMatch(regex, c)
|
|
319
304
|
}
|
|
320
305
|
|
|
321
306
|
var S = 0
|
|
@@ -703,6 +688,7 @@
|
|
|
703
688
|
tag.ns = parent.ns
|
|
704
689
|
}
|
|
705
690
|
parser.attribList.length = 0
|
|
691
|
+
emitNode(parser, 'onopentagstart', tag)
|
|
706
692
|
}
|
|
707
693
|
|
|
708
694
|
function qname (name, attribute) {
|
|
@@ -947,7 +933,7 @@
|
|
|
947
933
|
}
|
|
948
934
|
}
|
|
949
935
|
entity = entity.replace(/^0+/, '')
|
|
950
|
-
if (numStr.toLowerCase() !== entity) {
|
|
936
|
+
if (isNaN(num) || numStr.toLowerCase() !== entity) {
|
|
951
937
|
strictFail(parser, 'Invalid character entity')
|
|
952
938
|
return '&' + parser.entity + ';'
|
|
953
939
|
}
|
|
@@ -959,7 +945,7 @@
|
|
|
959
945
|
if (c === '<') {
|
|
960
946
|
parser.state = S.OPEN_WAKA
|
|
961
947
|
parser.startTagPosition = parser.position
|
|
962
|
-
} else if (
|
|
948
|
+
} else if (!isWhitespace(c)) {
|
|
963
949
|
// have to process this as a text node.
|
|
964
950
|
// weird, but happens.
|
|
965
951
|
strictFail(parser, 'Non-whitespace before first tag.')
|
|
@@ -996,9 +982,11 @@
|
|
|
996
982
|
while (true) {
|
|
997
983
|
c = charAt(chunk, i++)
|
|
998
984
|
parser.c = c
|
|
985
|
+
|
|
999
986
|
if (!c) {
|
|
1000
987
|
break
|
|
1001
988
|
}
|
|
989
|
+
|
|
1002
990
|
if (parser.trackPosition) {
|
|
1003
991
|
parser.position++
|
|
1004
992
|
if (c === '\n') {
|
|
@@ -1008,6 +996,7 @@
|
|
|
1008
996
|
parser.column++
|
|
1009
997
|
}
|
|
1010
998
|
}
|
|
999
|
+
|
|
1011
1000
|
switch (parser.state) {
|
|
1012
1001
|
case S.BEGIN:
|
|
1013
1002
|
parser.state = S.BEGIN_WHITESPACE
|
|
@@ -1042,7 +1031,7 @@
|
|
|
1042
1031
|
parser.state = S.OPEN_WAKA
|
|
1043
1032
|
parser.startTagPosition = parser.position
|
|
1044
1033
|
} else {
|
|
1045
|
-
if (
|
|
1034
|
+
if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {
|
|
1046
1035
|
strictFail(parser, 'Text data outside of root node.')
|
|
1047
1036
|
}
|
|
1048
1037
|
if (c === '&') {
|
|
@@ -1076,9 +1065,9 @@
|
|
|
1076
1065
|
if (c === '!') {
|
|
1077
1066
|
parser.state = S.SGML_DECL
|
|
1078
1067
|
parser.sgmlDecl = ''
|
|
1079
|
-
} else if (
|
|
1068
|
+
} else if (isWhitespace(c)) {
|
|
1080
1069
|
// wait for it...
|
|
1081
|
-
} else if (
|
|
1070
|
+
} else if (isMatch(nameStart, c)) {
|
|
1082
1071
|
parser.state = S.OPEN_TAG
|
|
1083
1072
|
parser.tagName = c
|
|
1084
1073
|
} else if (c === '/') {
|
|
@@ -1121,7 +1110,7 @@
|
|
|
1121
1110
|
emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)
|
|
1122
1111
|
parser.sgmlDecl = ''
|
|
1123
1112
|
parser.state = S.TEXT
|
|
1124
|
-
} else if (
|
|
1113
|
+
} else if (isQuote(c)) {
|
|
1125
1114
|
parser.state = S.SGML_DECL_QUOTED
|
|
1126
1115
|
parser.sgmlDecl += c
|
|
1127
1116
|
} else {
|
|
@@ -1146,7 +1135,7 @@
|
|
|
1146
1135
|
parser.doctype += c
|
|
1147
1136
|
if (c === '[') {
|
|
1148
1137
|
parser.state = S.DOCTYPE_DTD
|
|
1149
|
-
} else if (
|
|
1138
|
+
} else if (isQuote(c)) {
|
|
1150
1139
|
parser.state = S.DOCTYPE_QUOTED
|
|
1151
1140
|
parser.q = c
|
|
1152
1141
|
}
|
|
@@ -1165,7 +1154,7 @@
|
|
|
1165
1154
|
parser.doctype += c
|
|
1166
1155
|
if (c === ']') {
|
|
1167
1156
|
parser.state = S.DOCTYPE
|
|
1168
|
-
} else if (
|
|
1157
|
+
} else if (isQuote(c)) {
|
|
1169
1158
|
parser.state = S.DOCTYPE_DTD_QUOTED
|
|
1170
1159
|
parser.q = c
|
|
1171
1160
|
}
|
|
@@ -1249,7 +1238,7 @@
|
|
|
1249
1238
|
case S.PROC_INST:
|
|
1250
1239
|
if (c === '?') {
|
|
1251
1240
|
parser.state = S.PROC_INST_ENDING
|
|
1252
|
-
} else if (
|
|
1241
|
+
} else if (isWhitespace(c)) {
|
|
1253
1242
|
parser.state = S.PROC_INST_BODY
|
|
1254
1243
|
} else {
|
|
1255
1244
|
parser.procInstName += c
|
|
@@ -1257,7 +1246,7 @@
|
|
|
1257
1246
|
continue
|
|
1258
1247
|
|
|
1259
1248
|
case S.PROC_INST_BODY:
|
|
1260
|
-
if (!parser.procInstBody &&
|
|
1249
|
+
if (!parser.procInstBody && isWhitespace(c)) {
|
|
1261
1250
|
continue
|
|
1262
1251
|
} else if (c === '?') {
|
|
1263
1252
|
parser.state = S.PROC_INST_ENDING
|
|
@@ -1281,7 +1270,7 @@
|
|
|
1281
1270
|
continue
|
|
1282
1271
|
|
|
1283
1272
|
case S.OPEN_TAG:
|
|
1284
|
-
if (
|
|
1273
|
+
if (isMatch(nameBody, c)) {
|
|
1285
1274
|
parser.tagName += c
|
|
1286
1275
|
} else {
|
|
1287
1276
|
newTag(parser)
|
|
@@ -1290,7 +1279,7 @@
|
|
|
1290
1279
|
} else if (c === '/') {
|
|
1291
1280
|
parser.state = S.OPEN_TAG_SLASH
|
|
1292
1281
|
} else {
|
|
1293
|
-
if (
|
|
1282
|
+
if (!isWhitespace(c)) {
|
|
1294
1283
|
strictFail(parser, 'Invalid character in tag name')
|
|
1295
1284
|
}
|
|
1296
1285
|
parser.state = S.ATTRIB
|
|
@@ -1310,13 +1299,13 @@
|
|
|
1310
1299
|
|
|
1311
1300
|
case S.ATTRIB:
|
|
1312
1301
|
// haven't read the attribute name yet.
|
|
1313
|
-
if (
|
|
1302
|
+
if (isWhitespace(c)) {
|
|
1314
1303
|
continue
|
|
1315
1304
|
} else if (c === '>') {
|
|
1316
1305
|
openTag(parser)
|
|
1317
1306
|
} else if (c === '/') {
|
|
1318
1307
|
parser.state = S.OPEN_TAG_SLASH
|
|
1319
|
-
} else if (
|
|
1308
|
+
} else if (isMatch(nameStart, c)) {
|
|
1320
1309
|
parser.attribName = c
|
|
1321
1310
|
parser.attribValue = ''
|
|
1322
1311
|
parser.state = S.ATTRIB_NAME
|
|
@@ -1333,9 +1322,9 @@
|
|
|
1333
1322
|
parser.attribValue = parser.attribName
|
|
1334
1323
|
attrib(parser)
|
|
1335
1324
|
openTag(parser)
|
|
1336
|
-
} else if (
|
|
1325
|
+
} else if (isWhitespace(c)) {
|
|
1337
1326
|
parser.state = S.ATTRIB_NAME_SAW_WHITE
|
|
1338
|
-
} else if (
|
|
1327
|
+
} else if (isMatch(nameBody, c)) {
|
|
1339
1328
|
parser.attribName += c
|
|
1340
1329
|
} else {
|
|
1341
1330
|
strictFail(parser, 'Invalid attribute name')
|
|
@@ -1345,7 +1334,7 @@
|
|
|
1345
1334
|
case S.ATTRIB_NAME_SAW_WHITE:
|
|
1346
1335
|
if (c === '=') {
|
|
1347
1336
|
parser.state = S.ATTRIB_VALUE
|
|
1348
|
-
} else if (
|
|
1337
|
+
} else if (isWhitespace(c)) {
|
|
1349
1338
|
continue
|
|
1350
1339
|
} else {
|
|
1351
1340
|
strictFail(parser, 'Attribute without value')
|
|
@@ -1358,7 +1347,7 @@
|
|
|
1358
1347
|
parser.attribName = ''
|
|
1359
1348
|
if (c === '>') {
|
|
1360
1349
|
openTag(parser)
|
|
1361
|
-
} else if (
|
|
1350
|
+
} else if (isMatch(nameStart, c)) {
|
|
1362
1351
|
parser.attribName = c
|
|
1363
1352
|
parser.state = S.ATTRIB_NAME
|
|
1364
1353
|
} else {
|
|
@@ -1369,9 +1358,9 @@
|
|
|
1369
1358
|
continue
|
|
1370
1359
|
|
|
1371
1360
|
case S.ATTRIB_VALUE:
|
|
1372
|
-
if (
|
|
1361
|
+
if (isWhitespace(c)) {
|
|
1373
1362
|
continue
|
|
1374
|
-
} else if (
|
|
1363
|
+
} else if (isQuote(c)) {
|
|
1375
1364
|
parser.q = c
|
|
1376
1365
|
parser.state = S.ATTRIB_VALUE_QUOTED
|
|
1377
1366
|
} else {
|
|
@@ -1396,13 +1385,13 @@
|
|
|
1396
1385
|
continue
|
|
1397
1386
|
|
|
1398
1387
|
case S.ATTRIB_VALUE_CLOSED:
|
|
1399
|
-
if (
|
|
1388
|
+
if (isWhitespace(c)) {
|
|
1400
1389
|
parser.state = S.ATTRIB
|
|
1401
1390
|
} else if (c === '>') {
|
|
1402
1391
|
openTag(parser)
|
|
1403
1392
|
} else if (c === '/') {
|
|
1404
1393
|
parser.state = S.OPEN_TAG_SLASH
|
|
1405
|
-
} else if (
|
|
1394
|
+
} else if (isMatch(nameStart, c)) {
|
|
1406
1395
|
strictFail(parser, 'No whitespace between attributes')
|
|
1407
1396
|
parser.attribName = c
|
|
1408
1397
|
parser.attribValue = ''
|
|
@@ -1413,7 +1402,7 @@
|
|
|
1413
1402
|
continue
|
|
1414
1403
|
|
|
1415
1404
|
case S.ATTRIB_VALUE_UNQUOTED:
|
|
1416
|
-
if (
|
|
1405
|
+
if (!isAttribEnd(c)) {
|
|
1417
1406
|
if (c === '&') {
|
|
1418
1407
|
parser.state = S.ATTRIB_VALUE_ENTITY_U
|
|
1419
1408
|
} else {
|
|
@@ -1431,9 +1420,9 @@
|
|
|
1431
1420
|
|
|
1432
1421
|
case S.CLOSE_TAG:
|
|
1433
1422
|
if (!parser.tagName) {
|
|
1434
|
-
if (
|
|
1423
|
+
if (isWhitespace(c)) {
|
|
1435
1424
|
continue
|
|
1436
|
-
} else if (
|
|
1425
|
+
} else if (notMatch(nameStart, c)) {
|
|
1437
1426
|
if (parser.script) {
|
|
1438
1427
|
parser.script += '</' + c
|
|
1439
1428
|
parser.state = S.SCRIPT
|
|
@@ -1445,14 +1434,14 @@
|
|
|
1445
1434
|
}
|
|
1446
1435
|
} else if (c === '>') {
|
|
1447
1436
|
closeTag(parser)
|
|
1448
|
-
} else if (
|
|
1437
|
+
} else if (isMatch(nameBody, c)) {
|
|
1449
1438
|
parser.tagName += c
|
|
1450
1439
|
} else if (parser.script) {
|
|
1451
1440
|
parser.script += '</' + parser.tagName
|
|
1452
1441
|
parser.tagName = ''
|
|
1453
1442
|
parser.state = S.SCRIPT
|
|
1454
1443
|
} else {
|
|
1455
|
-
if (
|
|
1444
|
+
if (!isWhitespace(c)) {
|
|
1456
1445
|
strictFail(parser, 'Invalid tagname in closing tag')
|
|
1457
1446
|
}
|
|
1458
1447
|
parser.state = S.CLOSE_TAG_SAW_WHITE
|
|
@@ -1460,7 +1449,7 @@
|
|
|
1460
1449
|
continue
|
|
1461
1450
|
|
|
1462
1451
|
case S.CLOSE_TAG_SAW_WHITE:
|
|
1463
|
-
if (
|
|
1452
|
+
if (isWhitespace(c)) {
|
|
1464
1453
|
continue
|
|
1465
1454
|
}
|
|
1466
1455
|
if (c === '>') {
|
|
@@ -1496,7 +1485,7 @@
|
|
|
1496
1485
|
parser[buffer] += parseEntity(parser)
|
|
1497
1486
|
parser.entity = ''
|
|
1498
1487
|
parser.state = returnState
|
|
1499
|
-
} else if (
|
|
1488
|
+
} else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {
|
|
1500
1489
|
parser.entity += c
|
|
1501
1490
|
} else {
|
|
1502
1491
|
strictFail(parser, 'Invalid character in entity name')
|
|
@@ -1519,6 +1508,7 @@
|
|
|
1519
1508
|
}
|
|
1520
1509
|
|
|
1521
1510
|
/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
|
|
1511
|
+
/* istanbul ignore next */
|
|
1522
1512
|
if (!String.fromCodePoint) {
|
|
1523
1513
|
(function () {
|
|
1524
1514
|
var stringFromCharCode = String.fromCharCode
|
|
@@ -1560,6 +1550,7 @@
|
|
|
1560
1550
|
}
|
|
1561
1551
|
return result
|
|
1562
1552
|
}
|
|
1553
|
+
/* istanbul ignore next */
|
|
1563
1554
|
if (Object.defineProperty) {
|
|
1564
1555
|
Object.defineProperty(String, 'fromCodePoint', {
|
|
1565
1556
|
value: fromCodePoint,
|
package/package.json
CHANGED
|
@@ -2,22 +2,24 @@
|
|
|
2
2
|
"name": "sax",
|
|
3
3
|
"description": "An evented streaming XML parser in JavaScript",
|
|
4
4
|
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.2.4",
|
|
6
6
|
"main": "lib/sax.js",
|
|
7
7
|
"license": "ISC",
|
|
8
8
|
"scripts": {
|
|
9
|
-
"test": "tap test/*.js --cov",
|
|
10
|
-
"posttest": "standard -F test/*.js lib/*.js"
|
|
9
|
+
"test": "tap test/*.js --cov -j4",
|
|
10
|
+
"posttest": "standard -F test/*.js lib/*.js",
|
|
11
|
+
"preversion": "npm test",
|
|
12
|
+
"postversion": "npm publish",
|
|
13
|
+
"postpublish": "git push origin --all; git push origin --tags"
|
|
11
14
|
},
|
|
12
15
|
"repository": "git://github.com/isaacs/sax-js.git",
|
|
13
16
|
"files": [
|
|
14
17
|
"lib/sax.js",
|
|
15
18
|
"LICENSE",
|
|
16
|
-
"LICENSE-W3C.html",
|
|
17
19
|
"README.md"
|
|
18
20
|
],
|
|
19
21
|
"devDependencies": {
|
|
20
|
-
"standard": "^
|
|
21
|
-
"tap": "^5.
|
|
22
|
+
"standard": "^8.6.0",
|
|
23
|
+
"tap": "^10.5.1"
|
|
22
24
|
}
|
|
23
25
|
}
|
package/LICENSE-W3C.html
DELETED
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
2
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="generator" content="HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 13), see www.w3.org" /><title>W3C Software Notice and License</title><link rel="stylesheet" href="/2008/site/css/minimum" type="text/css" media="handheld, all" /><style type="text/css" media="print, screen and (min-width: 481px)" xml:space="preserve">
|
|
3
|
-
@import url("/2008/site/css/advanced");
|
|
4
|
-
</style><link href="/2008/site/css/minimum" rel="stylesheet" type="text/css" media="handheld, only screen and (max-device-width: 480px)" /><meta name="viewport" content="width=device-width" /><link rel="stylesheet" href="/2008/site/css/print" type="text/css" media="print" /><link rel="shortcut icon" href="/2008/site/images/favicon.ico" type="image/x-icon" /></head><body id="www-w3-org" class="w3c_public"><div id="w3c_container">
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<div id="w3c_mast">
|
|
9
|
-
<h1 class="logo">
|
|
10
|
-
<a tabindex="2" accesskey="1" href="/"><img src="/2008/site/images/logo-w3c-mobile-lg" width="90" height="53" alt="W3C" /></a>
|
|
11
|
-
<span class="alt-logo">W3C</span>
|
|
12
|
-
</h1>
|
|
13
|
-
|
|
14
|
-
<div id="w3c_nav">
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
<form action="/Help/search" method="get" enctype="application/x-www-form-urlencoded"><div class="w3c_sec_nav"><!-- --></div><ul class="main_nav"><li class="first-item">
|
|
19
|
-
<a href="/standards/">Standards</a>
|
|
20
|
-
</li><li>
|
|
21
|
-
<a href="/participate/">Participate</a>
|
|
22
|
-
</li><li>
|
|
23
|
-
<a href="/Consortium/membership">Membership</a>
|
|
24
|
-
</li><li class="last-item">
|
|
25
|
-
<a href="/Consortium/">About W3C</a>
|
|
26
|
-
</li><li class="search-item">
|
|
27
|
-
<div id="search-form">
|
|
28
|
-
<input tabindex="3" class="text" name="q" value="" title="Search" type="text" />
|
|
29
|
-
<button id="search-submit" name="search-submit" type="submit"><img class="submit" src="/2008/site/images/search-button" alt="Search" width="21" height="17" /></button>
|
|
30
|
-
</div>
|
|
31
|
-
</li></ul></form>
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
</div>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<div id="w3c_main">
|
|
38
|
-
<div id="w3c_logo_shadow" class="w3c_leftCol">
|
|
39
|
-
<img height="32" alt="" src="/2008/site/images/logo-shadow" />
|
|
40
|
-
</div>
|
|
41
|
-
|
|
42
|
-
<div class="w3c_leftCol"><h2 class="offscreen">Site Navigation</h2>
|
|
43
|
-
<h3 class="category"><span class="ribbon"><a href="/Consortium/Legal/ipr-notice.html" title="Up to Policies and Legal Information">Policies and Legal Information <img src="/2008/site/images/header-link" alt="Header link" width="13" height="13" class="header-link" /></a></span></h3>
|
|
44
|
-
<ul class="theme">
|
|
45
|
-
<li><a href="/Consortium/Legal/2008/04-testsuite-copyright.html">Licenses for W3C Test Suites</a></li>
|
|
46
|
-
<li><a href="/2004/10/27-testcases.html">Policies for Contribution of Test Cases to W3C</a></li>
|
|
47
|
-
<li><a href="/Consortium/Legal/IPR-FAQ-20000620.html">Intellectual Rights FAQ</a></li>
|
|
48
|
-
<li><a href="/Consortium/Legal/privacy-statement-20000612.html">W3C Privacy Statements</a></li>
|
|
49
|
-
<li><a href="/Consortium/Legal/2002/copyright-documents-20021231.html">W3C Document License</a></li>
|
|
50
|
-
<li><a href="/Consortium/Legal/2002/trademarks-20021231.html">W3C Trademarks and Generic Terms</a></li>
|
|
51
|
-
<li><a href="/Consortium/Legal/2002/trademark-license-20021231.html">W3C® Trademark and Service Mark License</a></li>
|
|
52
|
-
<li><a class="current">W3C Software Notice and License</a></li>
|
|
53
|
-
<li><a href="/Consortium/Legal/2002/collaborators-agreement-20021231.html">W3C Invited Expert and Collaborators Agreement</a></li>
|
|
54
|
-
<li><a href="/Consortium/Persistence.html">W3C URI Persistence Policy</a></li>
|
|
55
|
-
<li><a href="/1999/10/21-mirroring-policy.html">Mirroring the W3C Site</a></li>
|
|
56
|
-
<li><a href="/Consortium/Legal/2006/08-copyright-translations.html">Translations of the Copyright Notice</a></li>
|
|
57
|
-
</ul>
|
|
58
|
-
<br /></div>
|
|
59
|
-
<div class="w3c_mainCol">
|
|
60
|
-
<div id="w3c_crumbs">
|
|
61
|
-
<div id="w3c_crumbs_frame">
|
|
62
|
-
<ul class="bct"> <!-- .bct / Breadcrumbs -->
|
|
63
|
-
<li class="skip"><a tabindex="1" accesskey="2" title="Skip to content (e.g., when browsing via audio)" href="#w3c_content_body">Skip</a></li>
|
|
64
|
-
<li><a href="/">W3C</a> <span class="cr">»</span> </li>
|
|
65
|
-
<li><a href="/Consortium/">About W3C</a> <span class="cr">»</span> </li>
|
|
66
|
-
<li><a href="/Consortium/facts.html">Facts About W3C</a> <span class="cr">»</span> </li>
|
|
67
|
-
<li><a href="/Consortium/Legal/ipr-notice.html">Policies and Legal Information</a> <span class="cr">»</span> </li>
|
|
68
|
-
<li class="current">W3C Software Notice and License</li>
|
|
69
|
-
</ul>
|
|
70
|
-
</div>
|
|
71
|
-
</div>
|
|
72
|
-
<h1 class="title">W3C Software Notice and License</h1>
|
|
73
|
-
<div id="w3c_content_body">
|
|
74
|
-
<div class="line">
|
|
75
|
-
<p class="intro tPadding">This work (and included software, documentation such as READMEs, or other
|
|
76
|
-
related items) is being provided by the copyright holders under the following
|
|
77
|
-
license.</p>
|
|
78
|
-
<h2>License</h2>
|
|
79
|
-
|
|
80
|
-
<p class="tPadding">
|
|
81
|
-
By obtaining, using and/or copying this work, you (the licensee)
|
|
82
|
-
agree that you have read, understood, and will comply with the following
|
|
83
|
-
terms and conditions.</p>
|
|
84
|
-
|
|
85
|
-
<p>Permission to copy, modify, and distribute this software and its
|
|
86
|
-
documentation, with or without modification, for any purpose and without
|
|
87
|
-
fee or royalty is hereby granted, provided that you include the following on
|
|
88
|
-
ALL copies of the software and documentation or portions thereof, including
|
|
89
|
-
modifications:</p>
|
|
90
|
-
|
|
91
|
-
<ul class="show_items"><li>The full text of this NOTICE in a location viewable to users of the
|
|
92
|
-
redistributed or derivative work.</li><li>Any pre-existing intellectual property disclaimers, notices, or terms
|
|
93
|
-
and conditions. If none exist, the <a href="copyright-software-short-notice-20021231.html">W3C Software Short
|
|
94
|
-
Notice</a> should be included (hypertext is preferred, text is permitted)
|
|
95
|
-
within the body of any redistributed or derivative code.</li><li>Notice of any changes or modifications to the files, including the date
|
|
96
|
-
changes were made. (We recommend you provide URIs to the location from
|
|
97
|
-
which the code is derived.)</li></ul>
|
|
98
|
-
|
|
99
|
-
<h2>Disclaimers</h2>
|
|
100
|
-
|
|
101
|
-
<p>THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
|
|
102
|
-
MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
|
103
|
-
LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
|
|
104
|
-
PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
|
|
105
|
-
ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</p>
|
|
106
|
-
|
|
107
|
-
<p>COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
|
|
108
|
-
CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
|
|
109
|
-
DOCUMENTATION.</p>
|
|
110
|
-
|
|
111
|
-
<p>The name and trademarks of copyright holders may NOT be used in
|
|
112
|
-
advertising or publicity pertaining to the software without specific, written
|
|
113
|
-
prior permission. Title to copyright in this software and any associated
|
|
114
|
-
documentation will at all times remain with copyright holders.</p>
|
|
115
|
-
|
|
116
|
-
<h2>Notes</h2>
|
|
117
|
-
|
|
118
|
-
<p>This version: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231</p>
|
|
119
|
-
|
|
120
|
-
<p>This formulation of W3C's notice and license became active on December 31
|
|
121
|
-
2002. This version removes the copyright ownership notice such that this
|
|
122
|
-
license can be used with materials other than those owned by the W3C,
|
|
123
|
-
reflects that ERCIM is now a host of the W3C, includes references to this
|
|
124
|
-
specific dated version of the license, and removes the ambiguous grant of
|
|
125
|
-
"use". Otherwise, this version is the same as the <a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">previous
|
|
126
|
-
version</a> and is written so as to preserve the <a href="http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses">Free
|
|
127
|
-
Software Foundation's assessment of GPL compatibility</a> and <a href="http://www.opensource.org/licenses/W3C.php">OSI's certification</a>
|
|
128
|
-
under the <a href="http://www.opensource.org/docs/definition.php">Open Source
|
|
129
|
-
Definition</a>.</p>
|
|
130
|
-
</div>
|
|
131
|
-
</div>
|
|
132
|
-
</div>
|
|
133
|
-
</div>
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
</div><div id="w3c_footer">
|
|
138
|
-
<div id="w3c_footer-inner">
|
|
139
|
-
<h2 class="offscreen">Footer Navigation</h2>
|
|
140
|
-
<div class="w3c_footer-nav">
|
|
141
|
-
<h3>Navigation</h3>
|
|
142
|
-
<ul class="footer_top_nav"><li>
|
|
143
|
-
<a href="/">Home</a>
|
|
144
|
-
</li><li>
|
|
145
|
-
<a href="/standards/">Standards</a>
|
|
146
|
-
</li><li>
|
|
147
|
-
<a href="/participate/">Participate</a>
|
|
148
|
-
</li><li>
|
|
149
|
-
<a href="/Consortium/membership">Membership</a>
|
|
150
|
-
</li><li class="last-item">
|
|
151
|
-
<a href="/Consortium/">About W3C</a>
|
|
152
|
-
</li></ul>
|
|
153
|
-
</div>
|
|
154
|
-
<div class="w3c_footer-nav">
|
|
155
|
-
<h3>Contact W3C</h3>
|
|
156
|
-
<ul class="footer_bottom_nav"><li>
|
|
157
|
-
<a href="/Consortium/contact">Contact</a>
|
|
158
|
-
</li><li>
|
|
159
|
-
<a accesskey="0" href="/Help/">Help and FAQ</a>
|
|
160
|
-
</li><li>
|
|
161
|
-
<a href="/Consortium/sponsor/">Sponsor / Donate</a>
|
|
162
|
-
</li><li>
|
|
163
|
-
<a href="/Consortium/siteindex">Site Map</a>
|
|
164
|
-
</li><li>
|
|
165
|
-
<address id="w3c_signature">
|
|
166
|
-
<a href="http://lists.w3.org/Archives/Public/site-comments/">Feedback</a></address>
|
|
167
|
-
</li></ul>
|
|
168
|
-
</div>
|
|
169
|
-
<div class="w3c_footer-nav">
|
|
170
|
-
<h3>W3C Updates</h3>
|
|
171
|
-
<ul class="footer_follow_nav"><li>
|
|
172
|
-
<a href="http://twitter.com/W3C" title="Follow W3C on Twitter">
|
|
173
|
-
<img src="/2008/site/images/twitter-bird" alt="Twitter" width="78" height="83" class="social-icon" />
|
|
174
|
-
</a>
|
|
175
|
-
<a href="http://identi.ca/w3c" title="See W3C on Identica">
|
|
176
|
-
<img src="/2008/site/images/identica-logo" alt="Identica" width="91" height="83" class="social-icon" />
|
|
177
|
-
</a>
|
|
178
|
-
</li></ul>
|
|
179
|
-
</div>
|
|
180
|
-
<p class="copyright">Copyright © 2012 W3C <sup>®</sup> (<a href="http://www.csail.mit.edu/">
|
|
181
|
-
<acronym title="Massachusetts Institute of Technology">MIT</acronym>
|
|
182
|
-
</a>, <a href="http://www.ercim.org/">
|
|
183
|
-
<acronym title="European Research Consortium for Informatics and Mathematics"> ERCIM</acronym>
|
|
184
|
-
</a>, <a href="http://www.keio.ac.jp/">Keio</a>) <a href="/Consortium/Legal/ipr-notice">Usage policies apply</a>.</p>
|
|
185
|
-
</div>
|
|
186
|
-
</div><!-- Generated from data/scripts.php, ../../smarty/{scripts.tpl} --><!-- At the bottom for performance reasons --><div id="w3c_scripts">
|
|
187
|
-
<script type="text/javascript" src="/2008/site/js/main" xml:space="preserve"><!-- --></script>
|
|
188
|
-
</div></body></html>
|