diff --git a/package-lock.json b/package-lock.json index a23577c1..b4f15647 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "css-what", - "version": "3.4.2", + "version": "4.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -519,13 +519,13 @@ } }, "@jest/core": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.5.2.tgz", - "integrity": "sha512-LLTo1LQMg7eJjG/+P1NYqFof2B25EV1EqzD5FonklihG4UJKiK2JBIvWonunws6W7e+DhNLoFD+g05tCY03eyA==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.5.3.tgz", + "integrity": "sha512-CiU0UKFF1V7KzYTVEtFbFmGLdb2g4aTtY0WlyUfLgj/RtoTnJFhh50xKKr7OYkdmBUlGFSa2mD1TU3UZ6OLd4g==", "dev": true, "requires": { "@jest/console": "^26.5.2", - "@jest/reporters": "^26.5.2", + "@jest/reporters": "^26.5.3", "@jest/test-result": "^26.5.2", "@jest/transform": "^26.5.2", "@jest/types": "^26.5.2", @@ -535,17 +535,17 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-changed-files": "^26.5.2", - "jest-config": "^26.5.2", + "jest-config": "^26.5.3", "jest-haste-map": "^26.5.2", "jest-message-util": "^26.5.2", "jest-regex-util": "^26.0.0", "jest-resolve": "^26.5.2", - "jest-resolve-dependencies": "^26.5.2", - "jest-runner": "^26.5.2", - "jest-runtime": "^26.5.2", - "jest-snapshot": "^26.5.2", + "jest-resolve-dependencies": "^26.5.3", + "jest-runner": "^26.5.3", + "jest-runtime": "^26.5.3", + "jest-snapshot": "^26.5.3", "jest-util": "^26.5.2", - "jest-validate": "^26.5.2", + "jest-validate": "^26.5.3", "jest-watcher": "^26.5.2", "micromatch": "^4.0.2", "p-each-series": "^2.1.0", @@ -692,14 +692,14 @@ } }, "@jest/globals": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.5.2.tgz", - "integrity": "sha512-9PmnFsAUJxpPt1s/stq02acS1YHliVBDNfAWMe1bwdRr1iTCfhbNt3ERQXrO/ZfZSweftoA26Q/2yhSVSWQ3sw==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.5.3.tgz", + "integrity": "sha512-7QztI0JC2CuB+Wx1VdnOUNeIGm8+PIaqngYsZXQCkH2QV0GFqzAYc9BZfU0nuqA6cbYrWh5wkuMzyii3P7deug==", "dev": true, "requires": { "@jest/environment": "^26.5.2", "@jest/types": "^26.5.2", - "expect": "^26.5.2" + "expect": "^26.5.3" }, "dependencies": { "@jest/types": { @@ -737,9 +737,9 @@ } }, "@jest/reporters": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.5.2.tgz", - "integrity": "sha512-zvq6Wvy6MmJq/0QY0YfOPb49CXKSf42wkJbrBPkeypVa8I+XDxijvFuywo6TJBX/ILPrdrlE/FW9vJZh6Rf9vA==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.5.3.tgz", + "integrity": "sha512-X+vR0CpfMQzYcYmMFKNY9n4jklcb14Kffffp7+H/MqitWnb0440bW2L76NGWKAa+bnXhNoZr+lCVtdtPmfJVOQ==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", @@ -766,7 +766,7 @@ "source-map": "^0.6.0", "string-length": "^4.0.1", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^5.0.1" + "v8-to-istanbul": "^6.0.1" }, "dependencies": { "@jest/types": { @@ -861,16 +861,16 @@ } }, "@jest/test-sequencer": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.5.2.tgz", - "integrity": "sha512-XmGEh7hh07H2B8mHLFCIgr7gA5Y6Hw1ZATIsbz2fOhpnQ5AnQtZk0gmP0Q5/+mVB2xygO64tVFQxOajzoptkNA==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.5.3.tgz", + "integrity": "sha512-Wqzb7aQ13L3T47xHdpUqYMOpiqz6Dx2QDDghp5AV/eUDXR7JieY+E1s233TQlNyl+PqtqgjVokmyjzX/HA51BA==", "dev": true, "requires": { "@jest/test-result": "^26.5.2", "graceful-fs": "^4.2.4", "jest-haste-map": "^26.5.2", - "jest-runner": "^26.5.2", - "jest-runtime": "^26.5.2" + "jest-runner": "^26.5.3", + "jest-runtime": "^26.5.3" } }, "@jest/transform": { @@ -1090,9 +1090,9 @@ "dev": true }, "@types/prettier": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.1.tgz", - "integrity": "sha512-2zs+O+UkDsJ1Vcp667pd3f8xearMdopz/z54i99wtRDI5KLmngk7vlrYZD0ZjKHaROR03EznlBbVY9PfAEyJIQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-IiPhNnenzkqdSdQH3ifk9LoX7oQe61ZlDdDO4+MUv6FyWdPGDPr26gCPVs3oguZEMq//nFZZpwUZcVuNJsG+DQ==", "dev": true }, "@types/stack-utils": { @@ -2128,9 +2128,9 @@ } }, "eslint": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.10.0.tgz", - "integrity": "sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.11.0.tgz", + "integrity": "sha512-G9+qtYVCHaDi1ZuWzBsOWo2wSwd70TXnU6UHA3cTYHp7gCTXZcpggWFoUVAMRarg68qtPoNfFbzPh+VdOgmwmw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -2143,7 +2143,7 @@ "enquirer": "^2.3.5", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^1.3.0", + "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.0", "esquery": "^1.2.0", "esutils": "^2.0.2", @@ -2182,12 +2182,6 @@ "supports-color": "^7.1.0" } }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -2470,9 +2464,9 @@ } }, "expect": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.5.2.tgz", - "integrity": "sha512-ccTGrXZd8DZCcvCz4htGXTkd/LOoy6OEtiDS38x3/VVf6E4AQL0QoeksBiw7BtGR5xDNiRYPB8GN6pfbuTOi7w==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.5.3.tgz", + "integrity": "sha512-kkpOhGRWGOr+TEFUnYAjfGvv35bfP+OlPtqPIJpOCR9DVtv8QV+p8zG0Edqafh80fsjeE+7RBcVUq1xApnYglw==", "dev": true, "requires": { "@jest/types": "^26.5.2", @@ -3301,14 +3295,14 @@ } }, "jest": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.5.2.tgz", - "integrity": "sha512-4HFabJVwsgDwul/7rhXJ3yFAF/aUkVIXiJWmgFxb+WMdZG39fVvOwYAs8/3r4AlFPc4m/n5sTMtuMbOL3kNtrQ==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.5.3.tgz", + "integrity": "sha512-uJi3FuVSLmkZrWvaDyaVTZGLL8WcfynbRnFXyAHuEtYiSZ+ijDDIMOw1ytmftK+y/+OdAtsG9QrtbF7WIBmOyA==", "dev": true, "requires": { - "@jest/core": "^26.5.2", + "@jest/core": "^26.5.3", "import-local": "^3.0.2", - "jest-cli": "^26.5.2" + "jest-cli": "^26.5.3" }, "dependencies": { "@jest/types": { @@ -3344,12 +3338,12 @@ } }, "jest-cli": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.5.2.tgz", - "integrity": "sha512-usm48COuUvRp8YEG5OWOaxbSM0my7eHn3QeBWxiGUuFhvkGVBvl1fic4UjC02EAEQtDv8KrNQUXdQTV6ZZBsoA==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.5.3.tgz", + "integrity": "sha512-HkbSvtugpSXBf2660v9FrNVUgxvPkssN8CRGj9gPM8PLhnaa6zziFiCEKQAkQS4uRzseww45o0TR+l6KeRYV9A==", "dev": true, "requires": { - "@jest/core": "^26.5.2", + "@jest/core": "^26.5.3", "@jest/test-result": "^26.5.2", "@jest/types": "^26.5.2", "chalk": "^4.0.0", @@ -3357,9 +3351,9 @@ "graceful-fs": "^4.2.4", "import-local": "^3.0.2", "is-ci": "^2.0.0", - "jest-config": "^26.5.2", + "jest-config": "^26.5.3", "jest-util": "^26.5.2", - "jest-validate": "^26.5.2", + "jest-validate": "^26.5.3", "prompts": "^2.0.1", "yargs": "^15.4.1" } @@ -3453,13 +3447,13 @@ } }, "jest-config": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.5.2.tgz", - "integrity": "sha512-dqJOnSegNdE5yDiuGHsjTM5gec7Z4AcAMHiW+YscbOYJAlb3LEtDSobXCq0or9EmGQI5SFmKy4T7P1FxetJOfg==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.5.3.tgz", + "integrity": "sha512-NVhZiIuN0GQM6b6as4CI5FSCyXKxdrx5ACMCcv/7Pf+TeCajJhJc+6dwgdAVPyerUFB9pRBIz3bE7clSrRge/w==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.5.2", + "@jest/test-sequencer": "^26.5.3", "@jest/types": "^26.5.2", "babel-jest": "^26.5.2", "chalk": "^4.0.0", @@ -3469,11 +3463,11 @@ "jest-environment-jsdom": "^26.5.2", "jest-environment-node": "^26.5.2", "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.5.2", + "jest-jasmine2": "^26.5.3", "jest-regex-util": "^26.0.0", "jest-resolve": "^26.5.2", "jest-util": "^26.5.2", - "jest-validate": "^26.5.2", + "jest-validate": "^26.5.3", "micromatch": "^4.0.2", "pretty-format": "^26.5.2" }, @@ -3776,9 +3770,9 @@ } }, "jest-jasmine2": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.5.2.tgz", - "integrity": "sha512-2J+GYcgLVPTkpmvHEj0/IDTIAuyblGNGlyGe4fLfDT2aktEPBYvoxUwFiOmDDxxzuuEAD2uxcYXr0+1Yw4tjFA==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.5.3.tgz", + "integrity": "sha512-nFlZOpnGlNc7y/+UkkeHnvbOM+rLz4wB1AimgI9QhtnqSZte0wYjbAm8hf7TCwXlXgDwZxAXo6z0a2Wzn9FoOg==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", @@ -3789,13 +3783,13 @@ "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^26.5.2", + "expect": "^26.5.3", "is-generator-fn": "^2.0.0", "jest-each": "^26.5.2", "jest-matcher-utils": "^26.5.2", "jest-message-util": "^26.5.2", - "jest-runtime": "^26.5.2", - "jest-snapshot": "^26.5.2", + "jest-runtime": "^26.5.3", + "jest-snapshot": "^26.5.3", "jest-util": "^26.5.2", "pretty-format": "^26.5.2", "throat": "^5.0.0" @@ -4148,14 +4142,14 @@ } }, "jest-resolve-dependencies": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.5.2.tgz", - "integrity": "sha512-LLkc8LuRtxqOx0AtX/Npa2C4I23WcIrwUgNtHYXg4owYF/ZDQShcwBAHjYZIFR06+HpQcZ43+kCTMlQ3aDCYTg==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.5.3.tgz", + "integrity": "sha512-+KMDeke/BFK+mIQ2IYSyBz010h7zQaVt4Xie6cLqUGChorx66vVeQVv4ErNoMwInnyYHi1Ud73tDS01UbXbfLQ==", "dev": true, "requires": { "@jest/types": "^26.5.2", "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.5.2" + "jest-snapshot": "^26.5.3" }, "dependencies": { "@jest/types": { @@ -4193,9 +4187,9 @@ } }, "jest-runner": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.5.2.tgz", - "integrity": "sha512-GKhYxtSX5+tXZsd2QwfkDqPIj5C2HqOdXLRc2x2qYqWE26OJh17xo58/fN/mLhRkO4y6o60ZVloan7Kk5YA6hg==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.5.3.tgz", + "integrity": "sha512-qproP0Pq7IIule+263W57k2+8kWCszVJTC9TJWGUz0xJBr+gNiniGXlG8rotd0XxwonD5UiJloYoSO5vbUr5FQ==", "dev": true, "requires": { "@jest/console": "^26.5.2", @@ -4207,13 +4201,13 @@ "emittery": "^0.7.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-config": "^26.5.2", + "jest-config": "^26.5.3", "jest-docblock": "^26.0.0", "jest-haste-map": "^26.5.2", "jest-leak-detector": "^26.5.2", "jest-message-util": "^26.5.2", "jest-resolve": "^26.5.2", - "jest-runtime": "^26.5.2", + "jest-runtime": "^26.5.3", "jest-util": "^26.5.2", "jest-worker": "^26.5.0", "source-map-support": "^0.5.6", @@ -4255,15 +4249,15 @@ } }, "jest-runtime": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.5.2.tgz", - "integrity": "sha512-zArr4DatX/Sn0wswX/AnAuJgmwgAR5rNtrUz36HR8BfMuysHYNq5sDbYHuLC4ICyRdy5ae/KQ+sczxyS9G6Qvw==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.5.3.tgz", + "integrity": "sha512-IDjalmn2s/Tc4GvUwhPHZ0iaXCdMRq5p6taW9P8RpU+FpG01O3+H8z+p3rDCQ9mbyyyviDgxy/LHPLzrIOKBkQ==", "dev": true, "requires": { "@jest/console": "^26.5.2", "@jest/environment": "^26.5.2", "@jest/fake-timers": "^26.5.2", - "@jest/globals": "^26.5.2", + "@jest/globals": "^26.5.3", "@jest/source-map": "^26.5.0", "@jest/test-result": "^26.5.2", "@jest/transform": "^26.5.2", @@ -4274,15 +4268,15 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-config": "^26.5.2", + "jest-config": "^26.5.3", "jest-haste-map": "^26.5.2", "jest-message-util": "^26.5.2", "jest-mock": "^26.5.2", "jest-regex-util": "^26.0.0", "jest-resolve": "^26.5.2", - "jest-snapshot": "^26.5.2", + "jest-snapshot": "^26.5.3", "jest-util": "^26.5.2", - "jest-validate": "^26.5.2", + "jest-validate": "^26.5.3", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^15.4.1" @@ -4333,9 +4327,9 @@ } }, "jest-snapshot": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.5.2.tgz", - "integrity": "sha512-MkXIDvEefzDubI/WaDVSRH4xnkuirP/Pz8LhAIDXcVQTmcEfwxywj5LGwBmhz+kAAIldA7XM4l96vbpzltSjqg==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.5.3.tgz", + "integrity": "sha512-ZgAk0Wm0JJ75WS4lGaeRfa0zIgpL0KD595+XmtwlIEMe8j4FaYHyZhP1LNOO+8fXq7HJ3hll54+sFV9X4+CGVw==", "dev": true, "requires": { "@babel/types": "^7.0.0", @@ -4343,7 +4337,7 @@ "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.0.0", "chalk": "^4.0.0", - "expect": "^26.5.2", + "expect": "^26.5.3", "graceful-fs": "^4.2.4", "jest-diff": "^26.5.2", "jest-get-type": "^26.3.0", @@ -4475,9 +4469,9 @@ } }, "jest-validate": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.5.2.tgz", - "integrity": "sha512-FmJks0zY36mp6Af/5sqO6CTL9bNMU45yKCJk3hrz8d2aIqQIlN1pr9HPIwZE8blLaewOla134nt5+xAmWsx3SQ==", + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.5.3.tgz", + "integrity": "sha512-LX07qKeAtY+lsU0o3IvfDdN5KH9OulEGOMN1sFo6PnEf5/qjS1LZIwNk9blcBeW94pQUI9dLN9FlDYDWI5tyaA==", "dev": true, "requires": { "@jest/types": "^26.5.2", @@ -4511,9 +4505,9 @@ } }, "camelcase": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", - "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.1.0.tgz", + "integrity": "sha512-WCMml9ivU60+8rEJgELlFp1gxFcEGxwYleE3bziHEDeqsqAWGHdimB7beBFGjLzVNgPGyDsfgXLQEYMpmIFnVQ==", "dev": true }, "chalk": { @@ -6506,9 +6500,9 @@ "dev": true }, "v8-to-istanbul": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz", - "integrity": "sha512-mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-6.0.1.tgz", + "integrity": "sha512-PzM1WlqquhBvsV+Gco6WSFeg1AGdD53ccMRkFeyHRE/KRZaVacPOmQYP3EeVgDBtKD2BJ8kgynBQ5OtKiHCH+w==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.1", diff --git a/package.json b/package.json index 68fc4ca5..5b0d7947 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "author": "Felix Böhm (http://feedic.com)", "name": "css-what", "description": "a CSS selector parser", - "version": "3.4.2", + "version": "4.0.0", "funding": "https://github.com/sponsors/fb55", "repository": { "url": "https://github.com/fb55/css-what" diff --git a/readme.md b/readme.md index 26f95dec..e9c3e9b3 100644 --- a/readme.md +++ b/readme.md @@ -25,11 +25,11 @@ CSSwhat.parse("foo[bar]:baz") ## API -**`CSSwhat.parse(str, options)` - Parses `str`, optionally with the passed `options`.** +**`CSSwhat.parse(selector, options)` - Parses `selector`, optionally with the passed `options`.** The function returns a two-dimensional array. The first array represents selectors separated by commas (eg. `sub1, sub2`), the second contains the relevant tokens for that selector. Possible token types are: -| name | attributes | example | output | +| name | properties | example | output | | ---------------- | --------------------------------------- | ------------- | ---------------------------------------------------------------------------------------- | | `tag` | `name` | `div` | `{ type: 'tag', name: 'div' }` | | `universal` | - | `*` | `{ type: 'universal' }` | diff --git a/src/__fixtures__/out.json b/src/__fixtures__/out.json index 36b2b61f..da529079 100644 --- a/src/__fixtures__/out.json +++ b/src/__fixtures__/out.json @@ -5,6 +5,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -15,6 +16,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -23,6 +25,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -33,6 +36,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -41,6 +45,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -51,6 +56,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -59,6 +65,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -69,6 +76,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -78,6 +86,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -88,6 +97,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -96,6 +106,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ] @@ -104,6 +115,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" } ] @@ -112,6 +124,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "__sizzle__", @@ -123,6 +136,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -142,6 +156,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -161,6 +176,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -180,6 +196,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -199,6 +216,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -218,6 +236,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -237,6 +256,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -256,6 +276,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -275,6 +296,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -294,6 +316,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -313,6 +336,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -332,6 +356,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -351,6 +376,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -370,6 +396,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -389,6 +416,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -399,10 +427,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "hreflang", "action": "not", "value": "en", @@ -414,6 +444,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -425,7 +456,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -434,6 +466,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -445,7 +478,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -456,6 +490,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "asdfasdf", @@ -466,6 +501,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foobar", @@ -477,6 +513,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attr-child-boosh", @@ -488,6 +525,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -498,10 +536,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "equals", "value": "#aname", @@ -513,6 +553,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -523,10 +564,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "end", "value": "foo", @@ -538,6 +581,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -548,10 +592,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "any", "value": "hree", @@ -563,6 +609,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -573,10 +620,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "equals", "value": "two-foo", @@ -588,6 +637,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -598,10 +648,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "equals", "value": "two-foo", @@ -613,6 +665,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -623,10 +676,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "equals", "value": "two-foo", @@ -638,6 +693,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -648,10 +704,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "start", "value": "two", @@ -663,6 +721,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -673,10 +732,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "hyphen", "value": "two-foo", @@ -688,6 +749,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -698,10 +760,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "hyphen", "value": "two", @@ -713,6 +777,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -723,10 +788,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "element", "value": "three", @@ -738,6 +805,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attributes", @@ -748,10 +816,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "unique-test", "action": "exists", "value": "", @@ -763,6 +833,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "backslash\\foo", @@ -774,6 +845,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "blargh", @@ -785,6 +857,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "body", @@ -796,6 +869,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -807,6 +881,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -817,6 +892,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "booshTest", @@ -828,6 +904,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -837,7 +914,8 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -845,6 +923,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -855,6 +934,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -866,6 +946,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -876,6 +957,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -884,6 +966,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -894,6 +977,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -901,6 +985,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -909,6 +994,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -919,12 +1005,14 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ], [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -935,6 +1023,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -943,6 +1032,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -953,10 +1043,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -968,6 +1060,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -978,10 +1071,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "equals", "value": "fg", @@ -993,6 +1088,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -1003,10 +1099,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "test", "action": "exists", "value": "", @@ -1018,6 +1116,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -1028,6 +1127,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -1036,6 +1136,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -1045,6 +1146,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -1056,6 +1158,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -1065,6 +1168,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "apples", @@ -1074,6 +1178,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -1085,6 +1190,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "boosh", @@ -1095,6 +1201,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -1105,6 +1212,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "booshTest", @@ -1116,6 +1224,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "booshTest", @@ -1127,6 +1236,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "direct-descend", @@ -1137,6 +1247,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "direct-descend", @@ -1148,6 +1259,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "direct-descend", @@ -1158,6 +1270,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "direct-descend", @@ -1168,6 +1281,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "lvl2", @@ -1179,6 +1293,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "dupContainer", @@ -1189,6 +1304,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -1197,6 +1313,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "dupL1", @@ -1208,6 +1325,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "dupL2", @@ -1219,6 +1337,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "emem", @@ -1230,6 +1349,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "first", @@ -1240,6 +1360,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -1248,6 +1369,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "firstUL", @@ -1257,7 +1379,8 @@ "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -1265,6 +1388,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "firstp", @@ -1275,6 +1399,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foobar", @@ -1286,6 +1411,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "firstp", @@ -1296,6 +1422,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "simon1", @@ -1307,6 +1434,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "fixtures", @@ -1318,6 +1446,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "fixtures", @@ -1328,13 +1457,15 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -1342,6 +1473,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "fixtures", @@ -1352,6 +1484,7 @@ }, { "type": "tag", + "namespace": null, "name": "h1" } ] @@ -1360,6 +1493,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foo", @@ -1371,6 +1505,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foo", @@ -1380,7 +1515,8 @@ "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -1388,6 +1524,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foo", @@ -1398,6 +1535,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -1407,6 +1545,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "blog", @@ -1421,6 +1560,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foo", @@ -1431,6 +1571,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -1440,6 +1581,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "blog", @@ -1447,6 +1589,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "link", @@ -1461,6 +1604,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foo", @@ -1471,6 +1615,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -1480,6 +1625,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "link", @@ -1494,6 +1640,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foo:bar", @@ -1505,6 +1652,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foo:bar", @@ -1515,6 +1663,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" }, { @@ -1536,6 +1685,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1547,6 +1697,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1557,6 +1708,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "first", @@ -1568,6 +1720,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1587,6 +1740,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1611,6 +1765,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1630,6 +1785,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1649,6 +1805,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1673,6 +1830,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1695,6 +1853,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1719,6 +1878,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1738,6 +1898,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1748,6 +1909,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "option1a", @@ -1759,6 +1921,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1769,6 +1932,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "radio1", @@ -1780,6 +1944,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1790,6 +1955,7 @@ }, { "type": "attribute", + "namespace": null, "name": "for", "action": "equals", "value": "action", @@ -1801,6 +1967,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1811,10 +1978,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "radio", @@ -1824,6 +1993,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1834,10 +2004,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "hidden", @@ -1849,6 +2021,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1859,10 +2032,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "radio", @@ -1872,6 +2047,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1882,10 +2058,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "hidden", @@ -1897,6 +2075,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1907,10 +2086,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "radio", @@ -1920,6 +2101,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1930,10 +2112,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "hidden", @@ -1945,6 +2129,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1955,10 +2140,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "search", @@ -1970,6 +2157,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -1980,10 +2168,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "text", @@ -1995,6 +2185,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -2005,6 +2196,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -2018,6 +2210,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -2028,6 +2221,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -2044,6 +2238,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "option1b", @@ -2065,6 +2260,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -2075,6 +2271,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -2100,6 +2297,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "start", "value": "option3", @@ -2111,6 +2309,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -2121,6 +2320,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -2134,6 +2334,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -2144,6 +2345,7 @@ }, { "type": "tag", + "namespace": null, "name": "select" }, { @@ -2153,6 +2355,7 @@ [ { "type": "tag", + "namespace": null, "name": "option" }, { @@ -2174,6 +2377,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -2184,6 +2388,7 @@ }, { "type": "tag", + "namespace": null, "name": "select" }, { @@ -2193,6 +2398,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "select1", @@ -2211,6 +2417,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -2220,6 +2427,7 @@ [ { "type": "tag", + "namespace": null, "name": "option" } ] @@ -2231,6 +2439,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -2241,6 +2450,7 @@ }, { "type": "tag", + "namespace": null, "name": "select" }, { @@ -2250,6 +2460,7 @@ [ { "type": "attribute", + "namespace": null, "name": "multiple", "action": "exists", "value": "", @@ -2264,6 +2475,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -2274,6 +2486,7 @@ }, { "type": "tag", + "namespace": null, "name": "select" }, { @@ -2283,6 +2496,7 @@ [ { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "select1", @@ -2297,6 +2511,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -2307,6 +2522,7 @@ }, { "type": "tag", + "namespace": null, "name": "select" }, { @@ -2316,6 +2532,7 @@ [ { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "select1", @@ -2330,6 +2547,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "grandfather", @@ -2340,6 +2558,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -2349,6 +2568,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "uncle", @@ -2362,6 +2582,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "son", @@ -2373,6 +2594,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "groups", @@ -2383,6 +2605,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -2391,6 +2614,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "hidden1", @@ -2407,6 +2631,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "hsoob", @@ -2418,6 +2643,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "hsoob", @@ -2428,6 +2654,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "spanny", @@ -2439,6 +2666,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "hsoob", @@ -2449,6 +2677,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -2460,6 +2689,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "hsoob", @@ -2470,6 +2700,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -2477,6 +2708,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "h", @@ -2488,6 +2720,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "hsoob", @@ -2498,6 +2731,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -2506,6 +2740,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "hsoob", @@ -2516,6 +2751,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -2523,6 +2759,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -2531,6 +2768,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "hsoob", @@ -2541,10 +2779,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -2556,6 +2796,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "hsoob", @@ -2566,6 +2807,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -2574,6 +2816,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "idTest", @@ -2585,6 +2828,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "item_1", @@ -2596,6 +2840,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "item_3", @@ -2607,6 +2852,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "length", @@ -2617,6 +2863,7 @@ }, { "type": "tag", + "namespace": null, "name": "input" } ] @@ -2625,6 +2872,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "lengthtest", @@ -2636,6 +2884,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2645,7 +2894,8 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -2658,6 +2908,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2667,7 +2918,8 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -2680,6 +2932,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2689,7 +2942,8 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -2702,6 +2956,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2711,10 +2966,12 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "id", "action": "end", "value": "_1", @@ -2726,6 +2983,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2735,10 +2993,12 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "id", "action": "end", "value": "_1", @@ -2750,6 +3010,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2759,10 +3020,12 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "id", "action": "any", "value": "2", @@ -2774,6 +3037,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2783,10 +3047,12 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "id", "action": "start", "value": "level2_", @@ -2798,6 +3064,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2807,10 +3074,12 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "id", "action": "start", "value": "level2_", @@ -2822,6 +3091,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2832,6 +3102,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -2840,6 +3111,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2850,6 +3122,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -2863,6 +3136,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2873,6 +3147,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" }, { @@ -2886,6 +3161,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2902,6 +3178,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2918,6 +3195,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2927,7 +3205,8 @@ "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -2940,6 +3219,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2949,7 +3229,8 @@ "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -2962,6 +3243,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2971,7 +3253,8 @@ "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -2984,6 +3267,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -2994,6 +3278,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -3007,6 +3292,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -3017,6 +3303,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -3030,6 +3317,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -3040,6 +3328,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -3048,6 +3337,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level1", @@ -3058,6 +3348,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" }, { @@ -3071,6 +3362,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_1", @@ -3080,7 +3372,8 @@ "type": "adjacent" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -3088,6 +3381,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_1", @@ -3098,6 +3392,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -3106,6 +3401,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_1", @@ -3115,7 +3411,8 @@ "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -3123,6 +3420,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_1", @@ -3132,7 +3430,8 @@ "type": "sibling" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -3140,6 +3439,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_1", @@ -3150,6 +3450,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -3158,6 +3459,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_1", @@ -3168,6 +3470,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -3176,6 +3479,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_2", @@ -3186,6 +3490,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -3194,6 +3499,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_2", @@ -3226,6 +3532,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_2", @@ -3258,6 +3565,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_2", @@ -3268,6 +3576,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -3276,6 +3585,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_1", @@ -3285,7 +3595,8 @@ "type": "adjacent" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -3293,6 +3604,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_1", @@ -3303,6 +3615,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" } ] @@ -3311,6 +3624,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_1", @@ -3321,6 +3635,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -3329,6 +3644,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_1", @@ -3339,6 +3655,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_2", @@ -3350,6 +3667,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_1", @@ -3360,6 +3678,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" } ] @@ -3368,6 +3687,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_1", @@ -3384,6 +3704,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_2", @@ -3393,7 +3714,8 @@ "type": "adjacent" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -3401,6 +3723,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_2", @@ -3410,7 +3733,8 @@ "type": "sibling" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -3418,6 +3742,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "link_2", @@ -3425,6 +3750,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -3436,6 +3762,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "link_2", @@ -3443,6 +3770,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -3450,6 +3778,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "highlight", @@ -3461,6 +3790,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "link_2", @@ -3468,6 +3798,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -3475,6 +3806,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "nonexistent", @@ -3486,6 +3818,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "list", @@ -3496,6 +3829,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -3509,6 +3843,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "list", @@ -3519,6 +3854,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -3532,6 +3868,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "list", @@ -3542,6 +3879,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -3551,6 +3889,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "item_1", @@ -3566,6 +3905,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "item_3", @@ -3580,6 +3920,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "list", @@ -3590,6 +3931,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" } ] @@ -3598,6 +3940,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "listWithTabIndex", @@ -3609,6 +3952,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "liveHandlerOrder", @@ -3619,6 +3963,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -3626,6 +3971,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { @@ -3639,6 +3985,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "lonelyBoosh", @@ -3650,6 +3997,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "lonelyHsoob", @@ -3661,6 +4009,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "moretests", @@ -3671,10 +4020,12 @@ }, { "type": "tag", + "namespace": null, "name": "script" }, { "type": "attribute", + "namespace": null, "name": "src", "action": "exists", "value": "", @@ -3686,6 +4037,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "name+value", @@ -3697,6 +4049,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "nonexistent", @@ -3708,7 +4061,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -3717,6 +4071,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "ap", @@ -3728,7 +4083,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -3739,6 +4095,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "oooo", @@ -3750,6 +4107,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "order-matters", @@ -3760,6 +4118,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "order-matters", @@ -3771,6 +4130,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -3780,7 +4140,8 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -3793,6 +4154,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -3803,6 +4165,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -3816,6 +4179,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -3826,6 +4190,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -3839,6 +4204,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -3849,6 +4215,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -3870,6 +4237,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -3880,6 +4248,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -3901,6 +4270,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -3911,6 +4281,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -3932,6 +4303,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -3942,6 +4314,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -3963,6 +4336,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -3973,6 +4347,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -3982,6 +4357,7 @@ [ { "type": "attribute", + "namespace": null, "name": "rel", "action": "end", "value": "nofollow", @@ -3995,6 +4371,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" } ] @@ -4003,6 +4380,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -4013,6 +4391,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4022,6 +4401,7 @@ [ { "type": "attribute", + "namespace": null, "name": "rel", "action": "end", "value": "nofollow", @@ -4035,6 +4415,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" } ] @@ -4043,6 +4424,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -4053,6 +4435,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4062,6 +4445,7 @@ [ { "type": "attribute", + "namespace": null, "name": "rel", "action": "end", "value": "nofollow", @@ -4075,6 +4459,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" } ] @@ -4083,6 +4468,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -4093,6 +4479,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4102,6 +4489,7 @@ [ { "type": "attribute", + "namespace": null, "name": "rel", "action": "end", "value": "nofollow", @@ -4116,6 +4504,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -4126,6 +4515,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4135,6 +4525,7 @@ [ { "type": "attribute", + "namespace": null, "name": "rel", "action": "start", "value": "external", @@ -4149,6 +4540,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -4159,6 +4551,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4168,6 +4561,7 @@ [ { "type": "attribute", + "namespace": null, "name": "rel", "action": "element", "value": "nofollow", @@ -4182,6 +4576,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -4192,6 +4587,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4205,6 +4601,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -4215,6 +4612,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4228,6 +4626,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -4238,6 +4637,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4251,6 +4651,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "p", @@ -4261,6 +4662,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4274,6 +4676,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4293,6 +4696,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4312,6 +4716,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4331,6 +4736,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4350,6 +4756,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4369,6 +4776,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4388,6 +4796,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4407,6 +4816,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4426,6 +4836,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4445,6 +4856,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4464,6 +4876,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4483,6 +4896,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4502,6 +4916,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4521,6 +4936,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4531,6 +4947,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4544,6 +4961,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4554,6 +4972,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4567,6 +4986,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4577,6 +4997,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4590,6 +5011,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4600,6 +5022,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4613,6 +5036,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4623,6 +5047,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4636,6 +5061,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4646,6 +5072,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4659,6 +5086,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4669,6 +5097,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -4682,6 +5111,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4692,6 +5122,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4705,6 +5136,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4715,6 +5147,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4728,6 +5161,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4738,6 +5172,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4751,6 +5186,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4761,6 +5197,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4774,6 +5211,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4784,6 +5222,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4797,6 +5236,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4807,6 +5247,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4820,6 +5261,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4830,6 +5272,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4843,6 +5286,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4853,6 +5297,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4866,6 +5311,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4876,6 +5322,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4889,6 +5336,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4899,6 +5347,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4912,6 +5361,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4922,6 +5372,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4935,6 +5386,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4945,6 +5397,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -4958,6 +5411,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "pseudos", @@ -4974,6 +5428,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -4985,6 +5440,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -4994,10 +5450,12 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "title", "action": "exists", "value": "", @@ -5009,6 +5467,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5033,7 +5492,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -5050,6 +5510,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5069,6 +5530,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5088,6 +5550,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5107,6 +5570,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5117,6 +5581,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -5130,6 +5595,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5140,6 +5606,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -5153,6 +5620,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5163,6 +5631,7 @@ }, { "type": "attribute", + "namespace": null, "name": "title", "action": "exists", "value": "", @@ -5174,6 +5643,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5184,6 +5654,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -5191,6 +5662,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -5199,6 +5671,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5209,6 +5682,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -5216,12 +5690,14 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ], [ { "type": "tag", + "namespace": null, "name": "code" }, { @@ -5229,6 +5705,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -5237,6 +5714,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5247,6 +5725,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -5254,6 +5733,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -5262,6 +5742,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5272,6 +5753,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -5279,6 +5761,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -5287,6 +5770,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5297,6 +5781,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -5304,6 +5789,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -5312,6 +5798,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5322,6 +5809,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -5335,6 +5823,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5345,6 +5834,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -5358,6 +5848,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5368,10 +5859,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "rel", "action": "equals", "value": "bookmark", @@ -5383,6 +5876,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5393,10 +5887,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "title", "action": "exists", "value": "", @@ -5408,6 +5904,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5418,10 +5915,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "title", "action": "exists", "value": "", @@ -5433,6 +5932,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5443,10 +5943,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "equals", "value": "http://www.google.com/", @@ -5458,6 +5960,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5468,10 +5971,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "rel", "action": "equals", "value": "bookmark", @@ -5483,6 +5988,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5493,10 +5999,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "rel", "action": "equals", "value": "bookmark", @@ -5508,6 +6016,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5518,10 +6027,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "title", "action": "exists", "value": "", @@ -5533,6 +6044,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5543,6 +6055,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -5552,6 +6065,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -5561,6 +6075,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -5570,6 +6085,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "exists", "value": "", @@ -5590,6 +6106,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5600,10 +6117,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "exists", "value": "", @@ -5621,12 +6140,14 @@ [ { "type": "tag", + "namespace": null, "name": "div" } ], [ { "type": "tag", + "namespace": null, "name": "span" } ] @@ -5646,7 +6167,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -5660,6 +6182,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5670,10 +6193,12 @@ }, { "type": "tag", + "namespace": null, "name": "form" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -5683,7 +6208,8 @@ "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -5696,6 +6222,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5706,10 +6233,12 @@ }, { "type": "tag", + "namespace": null, "name": "form" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -5729,6 +6258,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5739,10 +6269,12 @@ }, { "type": "tag", + "namespace": null, "name": "form" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "exists", "value": "", @@ -5755,6 +6287,7 @@ [ { "type": "attribute", + "namespace": null, "name": "action", "action": "end", "value": "formaction", @@ -5782,6 +6315,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5792,10 +6326,12 @@ }, { "type": "tag", + "namespace": null, "name": "form" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "exists", "value": "", @@ -5808,6 +6344,7 @@ [ { "type": "attribute", + "namespace": null, "name": "action", "action": "equals", "value": "form:action", @@ -5835,6 +6372,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5845,10 +6383,12 @@ }, { "type": "tag", + "namespace": null, "name": "form" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "exists", "value": "", @@ -5861,6 +6401,7 @@ [ { "type": "attribute", + "namespace": null, "name": "action", "action": "equals", "value": "form:action", @@ -5893,6 +6434,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5903,10 +6445,12 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { "type": "attribute", + "namespace": null, "name": "tabindex", "action": "equals", "value": "-1", @@ -5918,6 +6462,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5928,10 +6473,12 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { "type": "attribute", + "namespace": null, "name": "value", "action": "equals", "value": "1", @@ -5943,6 +6490,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5953,6 +6501,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -5961,6 +6510,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5971,6 +6521,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -5979,6 +6530,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -5989,6 +6541,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -5997,6 +6550,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6007,6 +6561,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -6015,6 +6570,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6025,6 +6581,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -6033,6 +6590,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6043,6 +6601,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -6051,6 +6610,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6061,6 +6621,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6068,6 +6629,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -6076,6 +6638,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6086,12 +6649,14 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ], [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6102,6 +6667,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6109,6 +6675,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -6117,6 +6684,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6127,6 +6695,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6140,6 +6709,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6150,6 +6720,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6163,6 +6734,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6173,6 +6745,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6195,6 +6768,7 @@ [ { "type": "tag", + "namespace": null, "name": "code" } ] @@ -6206,6 +6780,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6216,6 +6791,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6238,6 +6814,7 @@ [ { "type": "tag", + "namespace": null, "name": "code" } ] @@ -6254,6 +6831,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6264,6 +6842,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6273,6 +6852,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ] @@ -6284,6 +6864,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6294,6 +6875,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6303,6 +6885,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" } ] @@ -6314,6 +6897,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6324,6 +6908,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6333,6 +6918,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "blargh", @@ -6347,6 +6933,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6357,6 +6944,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6366,6 +6954,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "foo", @@ -6380,6 +6969,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6390,6 +6980,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6404,6 +6995,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ] @@ -6425,6 +7017,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6435,6 +7028,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6456,6 +7050,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6466,6 +7061,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6487,6 +7083,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6497,6 +7094,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6506,6 +7104,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ] @@ -6517,6 +7116,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6527,6 +7127,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6536,12 +7137,14 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ], [ { "type": "tag", + "namespace": null, "name": "b" } ] @@ -6553,6 +7156,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6563,6 +7167,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6572,18 +7177,21 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ], [ { "type": "tag", + "namespace": null, "name": "b" } ], [ { "type": "tag", + "namespace": null, "name": "div" } ] @@ -6595,6 +7203,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6605,6 +7214,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6614,10 +7224,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "blargh", @@ -6632,6 +7244,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6642,6 +7255,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6651,10 +7265,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "foo", @@ -6669,6 +7285,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6679,6 +7296,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6688,10 +7306,12 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "blargh", @@ -6706,6 +7326,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6716,6 +7337,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6725,10 +7347,12 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "foo", @@ -6743,6 +7367,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -6753,6 +7378,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -6766,6 +7392,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "seite1", @@ -6777,6 +7404,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -6786,7 +7414,8 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -6799,6 +7428,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -6818,6 +7448,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -6828,6 +7459,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -6841,6 +7473,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -6851,6 +7484,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -6864,6 +7498,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -6874,6 +7509,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -6887,6 +7523,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -6897,6 +7534,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -6910,6 +7548,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -6920,6 +7559,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -6933,6 +7573,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -6943,6 +7584,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -6956,6 +7598,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -6966,6 +7609,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -6979,6 +7623,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -6989,6 +7634,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7002,6 +7648,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7012,6 +7659,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7025,6 +7673,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7035,6 +7684,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7048,6 +7698,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7058,6 +7709,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7071,6 +7723,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7081,6 +7734,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7094,6 +7748,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7104,6 +7759,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7117,6 +7773,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7127,6 +7784,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7140,6 +7798,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7150,6 +7809,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7163,6 +7823,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7173,6 +7834,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7186,6 +7848,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7196,6 +7859,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7209,6 +7873,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7219,6 +7884,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7232,6 +7898,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7242,6 +7909,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7255,6 +7923,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7265,6 +7934,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7278,6 +7948,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7288,6 +7959,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7301,6 +7973,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7311,6 +7984,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7324,6 +7998,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7334,6 +8009,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7347,6 +8023,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7357,6 +8034,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7370,6 +8048,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7380,6 +8059,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7393,6 +8073,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7403,6 +8084,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7416,6 +8098,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7426,6 +8109,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7439,6 +8123,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7449,6 +8134,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7462,6 +8148,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7472,6 +8159,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7485,6 +8173,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7495,6 +8184,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7508,6 +8198,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7518,6 +8209,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7531,6 +8223,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7541,6 +8234,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7554,6 +8248,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7564,6 +8259,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7577,6 +8273,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7587,6 +8284,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7600,6 +8298,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7610,6 +8309,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7623,6 +8323,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7633,6 +8334,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7646,6 +8348,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7656,6 +8359,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7669,6 +8373,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7679,6 +8384,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7692,6 +8398,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7702,6 +8409,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7715,6 +8423,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7725,6 +8434,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7738,6 +8448,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7748,6 +8459,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7761,6 +8473,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7771,6 +8484,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7784,6 +8498,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7794,6 +8509,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7807,6 +8523,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7817,6 +8534,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7830,6 +8548,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7840,6 +8559,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7853,6 +8573,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7863,6 +8584,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7876,6 +8598,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7886,6 +8609,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7899,6 +8623,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7909,10 +8634,12 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { "type": "attribute", + "namespace": null, "name": "value", "action": "not", "value": "", @@ -7924,6 +8651,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -7934,10 +8662,12 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { "type": "attribute", + "namespace": null, "name": "value", "action": "equals", "value": "", @@ -7949,6 +8679,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select2", @@ -7959,6 +8690,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -7972,6 +8704,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select2", @@ -7982,10 +8715,12 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { "type": "attribute", + "namespace": null, "name": "selected", "action": "equals", "value": "selected", @@ -7997,6 +8732,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select2", @@ -8007,10 +8743,12 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { "type": "attribute", + "namespace": null, "name": "selected", "action": "exists", "value": "", @@ -8022,6 +8760,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select3", @@ -8032,6 +8771,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -8045,6 +8785,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "sep", @@ -8056,6 +8797,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "sibling-selector", @@ -8066,6 +8808,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sibling-selector", @@ -8077,6 +8820,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "sibling-selector", @@ -8087,10 +8831,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sibling-selector", @@ -8102,6 +8848,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "sibling-selector", @@ -8112,6 +8859,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sibling-selector", @@ -8123,6 +8871,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "sibling-selector", @@ -8133,10 +8882,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sibling-selector", @@ -8148,6 +8899,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "siblingTest", @@ -8158,13 +8910,15 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -8172,6 +8926,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "siblingTest", @@ -8182,6 +8937,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { @@ -8194,6 +8950,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { @@ -8201,6 +8958,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -8209,6 +8967,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "siblingTest", @@ -8219,6 +8978,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { @@ -8231,6 +8991,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { @@ -8238,6 +8999,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -8246,6 +9008,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "siblingTest", @@ -8256,13 +9019,15 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -8270,6 +9035,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "siblingTest", @@ -8280,6 +9046,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { @@ -8287,6 +9054,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { @@ -8294,6 +9062,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { @@ -8301,6 +9070,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -8309,6 +9079,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "siblingfirst", @@ -8319,6 +9090,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" } ] @@ -8327,6 +9099,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "spaced-tokens", @@ -8337,6 +9110,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -8344,6 +9118,7 @@ }, { "type": "tag", + "namespace": null, "name": "em" }, { @@ -8351,6 +9126,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -8359,6 +9135,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "spanny", @@ -8370,6 +9147,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "tName1", @@ -8381,6 +9159,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "tName1", @@ -8391,6 +9170,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -8399,6 +9179,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "tName1-span", @@ -8410,6 +9191,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "tName2", @@ -8421,6 +9203,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "tName2", @@ -8431,6 +9214,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -8439,6 +9223,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "tName2ID", @@ -8450,6 +9235,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "test.foo[5]bar", @@ -8461,6 +9247,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "tmp_input", @@ -8480,6 +9267,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "tmp_input", @@ -8499,6 +9287,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "tmp_input", @@ -8518,6 +9307,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "token-four", @@ -8529,6 +9319,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "troubleForm", @@ -8540,6 +9331,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "troubleForm", @@ -8549,7 +9341,8 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -8562,6 +9355,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "troubleForm", @@ -8571,10 +9365,12 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "radio", @@ -8586,6 +9382,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "troubleForm", @@ -8595,10 +9392,12 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "type", "action": "exists", "value": "", @@ -8610,6 +9409,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "troubleForm", @@ -8620,13 +9420,15 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -8639,6 +9441,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "troubleForm", @@ -8649,6 +9452,7 @@ }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "radio", @@ -8660,6 +9464,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "troubleForm", @@ -8670,6 +9475,7 @@ }, { "type": "attribute", + "namespace": null, "name": "type", "action": "exists", "value": "", @@ -8681,6 +9487,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "troubleForm2", @@ -8691,10 +9498,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "brackets[5][]", @@ -8706,6 +9515,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "troubleForm2", @@ -8716,10 +9526,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "brackets[5][]", @@ -8736,6 +9548,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "troubleForm2", @@ -8746,10 +9559,12 @@ }, { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "brackets[5][]", @@ -8757,6 +9572,7 @@ }, { "type": "attribute", + "namespace": null, "name": "value", "action": "equals", "value": "2", @@ -8768,6 +9584,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "types_all", @@ -8779,6 +9596,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "uncle", @@ -8790,6 +9608,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "台北Táiběi", @@ -8801,6 +9620,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "台北Táiběi", @@ -8810,6 +9630,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "台北", @@ -8820,14 +9641,16 @@ "*": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ], "* :not(*) foo": [ [ { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "descendant" @@ -8838,7 +9661,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -8848,6 +9672,7 @@ }, { "type": "tag", + "namespace": null, "name": "foo" } ] @@ -8855,25 +9680,29 @@ "* < *": [ [ { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "parent" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], "*, foo": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ], [ { "type": "tag", + "namespace": null, "name": "foo" } ] @@ -8881,7 +9710,8 @@ "*,:contains(!)": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ], [ @@ -8895,7 +9725,8 @@ "*:contains(humans)": [ [ { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -8907,10 +9738,12 @@ "*[id]": [ [ { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "id", "action": "exists", "value": "", @@ -8921,10 +9754,12 @@ "*[name=iframe]": [ [ { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "iframe", @@ -8935,10 +9770,12 @@ "*[type=checkbox]": [ [ { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "checkbox", @@ -8950,6 +9787,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "GROUPS", @@ -8961,6 +9799,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -8972,6 +9811,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -8982,6 +9822,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "booshTest", @@ -8992,6 +9833,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "spanny", @@ -9003,6 +9845,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -9013,6 +9856,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "spanny", @@ -9024,6 +9868,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -9034,6 +9879,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "d", @@ -9044,6 +9890,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sib", @@ -9055,6 +9902,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -9065,6 +9913,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "d", @@ -9075,6 +9924,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sib", @@ -9082,6 +9932,7 @@ }, { "type": "attribute", + "namespace": null, "name": "test", "action": "equals", "value": "f g", @@ -9093,6 +9944,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -9103,6 +9955,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "booshTest", @@ -9114,6 +9967,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -9124,6 +9978,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -9132,6 +9987,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -9139,6 +9995,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "b", @@ -9149,6 +10006,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "booshTest", @@ -9160,6 +10018,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -9170,6 +10029,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "booshTest", @@ -9181,6 +10041,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "blog", @@ -9192,6 +10053,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "blog", @@ -9199,6 +10061,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "link", @@ -9210,6 +10073,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -9221,6 +10085,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "class-with-dashes", @@ -9232,6 +10097,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "component", @@ -9243,6 +10109,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "container", @@ -9253,6 +10120,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -9262,6 +10130,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "excluded", @@ -9275,6 +10144,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -9283,6 +10153,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "d", @@ -9293,6 +10164,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "oooo", @@ -9303,6 +10175,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "emem", @@ -9314,6 +10187,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "d", @@ -9324,6 +10198,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sib", @@ -9335,6 +10210,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "d", @@ -9342,6 +10218,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "i", @@ -9352,6 +10229,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "emem", @@ -9363,6 +10241,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "direct-descend", @@ -9373,6 +10252,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "direct-descend", @@ -9383,6 +10263,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "lvl2", @@ -9394,6 +10275,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "direct-descend", @@ -9404,6 +10286,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "direct-descend", @@ -9414,6 +10297,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "direct-descend", @@ -9424,6 +10308,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "lvl2", @@ -9435,6 +10320,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "direct-descend", @@ -9445,6 +10331,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "direct-descend", @@ -9455,6 +10342,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -9463,6 +10351,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "e", @@ -9474,6 +10363,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "e", @@ -9481,6 +10371,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "hasOwnProperty", @@ -9488,6 +10379,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "toString", @@ -9499,6 +10391,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "excluded", @@ -9510,6 +10403,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "first", @@ -9521,6 +10415,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "foo", @@ -9532,6 +10427,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "foo:bar", @@ -9543,6 +10439,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "fototab", @@ -9553,6 +10450,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "thumbnails", @@ -9563,6 +10461,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -9571,6 +10470,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -9578,6 +10478,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "link_2", @@ -9589,6 +10490,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "link", @@ -9600,6 +10502,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "nothiddendiv", @@ -9610,6 +10513,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -9623,6 +10527,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "null", @@ -9634,6 +10539,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "null", @@ -9644,6 +10550,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -9652,6 +10559,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "odd", @@ -9664,6 +10572,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" } ] @@ -9675,6 +10584,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9685,6 +10595,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "middle", @@ -9695,6 +10606,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sibling", @@ -9706,6 +10618,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9716,6 +10629,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "middle", @@ -9726,6 +10640,7 @@ }, { "type": "tag", + "namespace": null, "name": "h2" } ] @@ -9734,6 +10649,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9744,6 +10660,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "middle", @@ -9754,6 +10671,7 @@ }, { "type": "tag", + "namespace": null, "name": "h3" } ] @@ -9762,6 +10680,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9772,6 +10691,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "middle", @@ -9782,6 +10702,7 @@ }, { "type": "tag", + "namespace": null, "name": "h4" } ] @@ -9790,6 +10711,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9800,6 +10722,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "middle", @@ -9810,6 +10733,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sibling", @@ -9821,6 +10745,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9831,6 +10756,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "middle", @@ -9841,6 +10767,7 @@ }, { "type": "tag", + "namespace": null, "name": "h2" } ] @@ -9849,6 +10776,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9859,6 +10787,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "middle", @@ -9869,6 +10798,7 @@ }, { "type": "tag", + "namespace": null, "name": "h3" } ] @@ -9877,6 +10807,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9887,6 +10818,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "middle", @@ -9897,6 +10829,7 @@ }, { "type": "tag", + "namespace": null, "name": "h4" } ] @@ -9905,6 +10838,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9915,6 +10849,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "middle", @@ -9925,10 +10860,12 @@ }, { "type": "tag", + "namespace": null, "name": "h4" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "younger", @@ -9940,6 +10877,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9950,6 +10888,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "oldest", @@ -9960,6 +10899,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sibling", @@ -9971,6 +10911,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -9981,6 +10922,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "oldest", @@ -9991,6 +10933,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sibling", @@ -10002,6 +10945,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -10012,6 +10956,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "youngest", @@ -10022,6 +10967,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sibling", @@ -10033,6 +10979,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "parent", @@ -10043,6 +10990,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "youngest", @@ -10053,6 +11001,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "sibling", @@ -10064,6 +11013,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "second", @@ -10075,6 +11025,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "select1", @@ -10086,6 +11037,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "test.foo[5]bar", @@ -10097,6 +11049,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "台北", @@ -10108,6 +11061,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "台北Táiběi", @@ -10119,6 +11073,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "台北Táiběi", @@ -10128,6 +11083,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "台北", @@ -10139,6 +11095,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "台北Táiběi", @@ -10146,6 +11103,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "台北", @@ -10182,6 +11140,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "option1b", @@ -10276,7 +11235,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -10291,7 +11251,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ], [ @@ -10325,7 +11286,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -10361,6 +11323,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ] @@ -10384,12 +11347,14 @@ [ { "type": "tag", + "namespace": null, "name": "div" } ], [ { "type": "tag", + "namespace": null, "name": "span" } ] @@ -10406,6 +11371,7 @@ [ { "type": "tag", + "namespace": null, "name": "option" } ] @@ -10508,6 +11474,7 @@ }, { "type": "attribute", + "namespace": null, "name": "data-pos", "action": "equals", "value": ":first", @@ -10559,7 +11526,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -10579,7 +11547,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -10607,7 +11576,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -10663,6 +11633,7 @@ [ { "type": "tag", + "namespace": null, "name": "code" } ] @@ -10884,6 +11855,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "a", @@ -10894,6 +11866,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "booshTest", @@ -10905,6 +11878,7 @@ [ { "type": "attribute", + "namespace": null, "name": "action", "action": "end", "value": "formaction", @@ -10916,6 +11890,7 @@ [ { "type": "attribute", + "namespace": null, "name": "action", "action": "equals", "value": "form:action", @@ -10927,6 +11902,7 @@ [ { "type": "attribute", + "namespace": null, "name": "action", "action": "equals", "value": "form:action", @@ -10943,6 +11919,7 @@ [ { "type": "attribute", + "namespace": null, "name": "attr", "action": "equals", "value": "boosh", @@ -10954,6 +11931,7 @@ [ { "type": "attribute", + "namespace": null, "name": "attr", "action": "equals", "value": "foo", @@ -10965,6 +11943,7 @@ [ { "type": "attribute", + "namespace": null, "name": "attr", "action": "exists", "value": "", @@ -10976,6 +11955,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "any", "value": "component", @@ -10987,6 +11967,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -10998,6 +11979,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -11009,6 +11991,7 @@ [ { "type": "attribute", + "namespace": null, "name": "constructor", "action": "equals", "value": "foo", @@ -11020,6 +12003,7 @@ [ { "type": "attribute", + "namespace": null, "name": "constructor", "action": "exists", "value": "", @@ -11031,6 +12015,7 @@ [ { "type": "attribute", + "namespace": null, "name": "foo", "action": "exists", "value": "", @@ -11042,6 +12027,7 @@ [ { "type": "attribute", + "namespace": null, "name": "foo", "action": "start", "value": "bar", @@ -11053,6 +12039,7 @@ [ { "type": "attribute", + "namespace": null, "name": "href", "action": "equals", "value": "#", @@ -11064,6 +12051,7 @@ [ { "type": "attribute", + "namespace": null, "name": "href", "action": "exists", "value": "", @@ -11075,6 +12063,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "any", "value": "option1", @@ -11086,6 +12075,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "any", "value": "option1", @@ -11093,6 +12083,7 @@ }, { "type": "attribute", + "namespace": null, "name": "type", "action": "not", "value": "checkbox", @@ -11104,6 +12095,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select1", @@ -11113,7 +12105,8 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -11132,6 +12125,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "select2", @@ -11141,7 +12135,8 @@ "type": "descendant" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "pseudo", @@ -11162,6 +12157,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "option1a", @@ -11173,6 +12169,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "exists", "value": "", @@ -11184,6 +12181,7 @@ [ { "type": "attribute", + "namespace": null, "name": "multiple", "action": "exists", "value": "", @@ -11195,6 +12193,7 @@ [ { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "id", @@ -11206,6 +12205,7 @@ [ { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "select1", @@ -11217,6 +12217,7 @@ [ { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "div", @@ -11228,6 +12229,7 @@ [ { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "example", @@ -11239,6 +12241,7 @@ [ { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "prop2", @@ -11250,6 +12253,7 @@ [ { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "select1", @@ -11261,6 +12265,7 @@ [ { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "tName1", @@ -11272,6 +12277,7 @@ [ { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "tName2", @@ -11283,6 +12289,7 @@ [ { "type": "attribute", + "namespace": null, "name": "rel", "action": "end", "value": "nofollow", @@ -11294,6 +12301,7 @@ [ { "type": "attribute", + "namespace": null, "name": "rel", "action": "end", "value": "nofollow", @@ -11305,6 +12313,7 @@ [ { "type": "attribute", + "namespace": null, "name": "rel", "action": "start", "value": "external", @@ -11316,6 +12325,7 @@ [ { "type": "attribute", + "namespace": null, "name": "rel", "action": "element", "value": "nofollow", @@ -11327,6 +12337,7 @@ [ { "type": "attribute", + "namespace": null, "name": "test", "action": "equals", "value": "", @@ -11338,6 +12349,7 @@ [ { "type": "attribute", + "namespace": null, "name": "test", "action": "start", "value": "", @@ -11349,6 +12361,7 @@ [ { "type": "attribute", + "namespace": null, "name": "title", "action": "exists", "value": "", @@ -11360,6 +12373,7 @@ [ { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "checkbox", @@ -11371,6 +12385,7 @@ [ { "type": "attribute", + "namespace": null, "name": "type", "action": "equals", "value": "radio", @@ -11382,6 +12397,7 @@ [ { "type": "attribute", + "namespace": null, "name": "watch", "action": "equals", "value": "bar", @@ -11393,6 +12409,7 @@ [ { "type": "attribute", + "namespace": null, "name": "watch", "action": "exists", "value": "", @@ -11404,6 +12421,7 @@ [ { "type": "attribute", + "namespace": null, "name": "xml:test", "action": "exists", "value": "", @@ -11415,6 +12433,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ] @@ -11423,10 +12442,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "link_2", @@ -11434,6 +12455,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -11445,12 +12467,14 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ], [ { "type": "tag", + "namespace": null, "name": "b" } ] @@ -11459,18 +12483,21 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ], [ { "type": "tag", + "namespace": null, "name": "b" } ], [ { "type": "tag", + "namespace": null, "name": "div" } ] @@ -11479,12 +12506,14 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ], [ { "type": "tag", + "namespace": null, "name": "p" } ] @@ -11493,18 +12522,21 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ], [ { "type": "tag", + "namespace": null, "name": "p" } ], [ { "type": "tag", + "namespace": null, "name": "b" } ] @@ -11513,10 +12545,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "GROUPS", @@ -11527,6 +12561,7 @@ }, { "type": "tag", + "namespace": null, "name": "code" }, { @@ -11534,6 +12569,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -11542,10 +12578,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "blog", @@ -11557,10 +12595,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "blog", @@ -11573,6 +12613,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "link", @@ -11587,10 +12628,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "highlight", @@ -11598,6 +12641,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -11609,10 +12653,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "highlight", @@ -11620,6 +12666,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -11627,6 +12674,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "nonexistent", @@ -11638,10 +12686,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -11653,10 +12703,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -11664,6 +12716,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "link_2", @@ -11675,10 +12728,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -11686,6 +12741,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "highlight", @@ -11697,10 +12753,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "odd", @@ -11712,6 +12770,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { @@ -11725,6 +12784,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { @@ -11738,6 +12798,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { @@ -11751,6 +12812,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { @@ -11764,6 +12826,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { @@ -11777,6 +12840,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { @@ -11790,6 +12854,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { @@ -11803,6 +12868,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { @@ -11812,6 +12878,7 @@ [ { "type": "attribute", + "namespace": null, "name": "href", "action": "equals", "value": "#", @@ -11826,10 +12893,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "any", "value": "blog", @@ -11846,7 +12915,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ], [ @@ -11872,6 +12942,7 @@ [ { "type": "tag", + "namespace": null, "name": "br" }, { @@ -11883,6 +12954,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -11924,10 +12996,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -11939,10 +13013,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "external", @@ -11955,6 +13031,7 @@ [ { "type": "attribute", + "namespace": null, "name": "href", "action": "equals", "value": "#", @@ -11969,10 +13046,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "external", @@ -11980,6 +13059,7 @@ }, { "type": "attribute", + "namespace": null, "name": "href", "action": "equals", "value": "#", @@ -11991,10 +13071,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "internal", @@ -12006,10 +13088,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "end", "value": "org/", @@ -12021,10 +13105,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "any", "value": "google", @@ -12036,10 +13122,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "start", "value": "http://www", @@ -12051,10 +13139,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "any", "value": "#", @@ -12066,10 +13156,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "equals", "value": "#", @@ -12081,10 +13173,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "exists", "value": "", @@ -12096,10 +13190,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "rel", "action": "start", "value": "external", @@ -12111,10 +13207,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "rel", "action": "start", "value": "external", @@ -12126,10 +13224,12 @@ [ { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "rel", "action": "start", "value": "external", @@ -12141,6 +13241,7 @@ [ { "type": "tag", + "namespace": null, "name": "body" } ] @@ -12149,6 +13250,7 @@ [ { "type": "tag", + "namespace": null, "name": "body" }, { @@ -12156,6 +13258,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12163,6 +13266,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12170,6 +13274,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -12178,10 +13283,12 @@ [ { "type": "tag", + "namespace": null, "name": "body" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "body", @@ -12193,6 +13300,7 @@ [ { "type": "tag", + "namespace": null, "name": "body" }, { @@ -12200,6 +13308,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12207,6 +13316,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12214,6 +13324,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -12222,10 +13333,12 @@ [ { "type": "tag", + "namespace": null, "name": "cite" }, { "type": "attribute", + "namespace": null, "name": "title", "action": "equals", "value": "hello world!", @@ -12237,6 +13350,7 @@ [ { "type": "tag", + "namespace": null, "name": "code" } ] @@ -12245,13 +13359,15 @@ [ { "type": "tag", + "namespace": null, "name": "code" }, { "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -12259,6 +13375,7 @@ [ { "type": "tag", + "namespace": null, "name": "component" } ] @@ -12267,10 +13384,12 @@ [ { "type": "tag", + "namespace": null, "name": "component" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "seite1", @@ -12282,6 +13401,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" } ] @@ -12290,6 +13410,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12297,6 +13418,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foo:bar", @@ -12308,6 +13430,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12315,6 +13438,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "test.foo[5]bar", @@ -12326,6 +13450,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12333,6 +13458,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "台北", @@ -12344,6 +13470,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12351,6 +13478,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "foo:bar", @@ -12362,6 +13490,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12369,6 +13498,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "test.foo[5]bar", @@ -12380,6 +13510,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12387,6 +13518,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "tokens", @@ -12394,6 +13526,7 @@ }, { "type": "attribute", + "namespace": null, "name": "title", "action": "equals", "value": "one two three #%", @@ -12405,6 +13538,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12412,6 +13546,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "tokens", @@ -12419,6 +13554,7 @@ }, { "type": "attribute", + "namespace": null, "name": "title", "action": "equals", "value": "one two three #%", @@ -12429,10 +13565,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "end", "value": "foo", @@ -12443,6 +13581,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -12451,6 +13590,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12458,6 +13598,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "tokens", @@ -12465,6 +13606,7 @@ }, { "type": "attribute", + "namespace": null, "name": "title", "action": "equals", "value": "one two", @@ -12476,6 +13618,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12483,6 +13626,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "tokens", @@ -12490,6 +13634,7 @@ }, { "type": "attribute", + "namespace": null, "name": "title", "action": "equals", "value": "one", @@ -12501,6 +13646,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12508,6 +13654,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "tokens", @@ -12515,6 +13662,7 @@ }, { "type": "attribute", + "namespace": null, "name": "title", "action": "equals", "value": "one two three #%", @@ -12525,6 +13673,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -12533,6 +13682,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12540,6 +13690,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "台北Táiběi", @@ -12551,6 +13702,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12558,6 +13710,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "nonexistent", @@ -12569,6 +13722,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12576,6 +13730,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12583,6 +13738,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "tName1", @@ -12594,6 +13750,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12601,6 +13758,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -12609,6 +13767,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12616,6 +13775,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level2_3", @@ -12627,6 +13787,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12634,6 +13795,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_2", @@ -12645,10 +13807,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attr-child-boosh", @@ -12656,6 +13820,7 @@ }, { "type": "attribute", + "namespace": null, "name": "attr", "action": "equals", "value": "boosh", @@ -12667,10 +13832,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attr-test3", @@ -12678,6 +13845,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "found", @@ -12685,6 +13853,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "you", @@ -12692,6 +13861,7 @@ }, { "type": "attribute", + "namespace": null, "name": "title", "action": "equals", "value": "whatup duders", @@ -12703,10 +13873,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "blargh", @@ -12718,10 +13890,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "fixtures", @@ -12732,6 +13906,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12739,6 +13914,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -12747,10 +13923,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "fixtures", @@ -12761,6 +13939,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12768,6 +13947,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { @@ -12775,6 +13955,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -12783,10 +13964,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "fixtures", @@ -12797,6 +13980,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -12805,10 +13989,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "fixtures", @@ -12819,6 +14005,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { @@ -12826,6 +14013,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -12834,10 +14022,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "form", @@ -12849,10 +14039,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "grandfather", @@ -12863,6 +14055,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -12871,12 +14064,14 @@ [ { "type": "tag", + "namespace": null, "name": "div" } ], [ { "type": "tag", + "namespace": null, "name": "span" } ] @@ -12885,10 +14080,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "blah", @@ -12899,6 +14096,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" }, { @@ -12906,6 +14104,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -12914,10 +14113,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -12929,10 +14130,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -12943,6 +14146,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -12951,10 +14155,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -12965,10 +14171,12 @@ }, { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -12980,10 +14188,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -12996,6 +14206,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -13010,10 +14221,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "foo", @@ -13025,10 +14238,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "foo", @@ -13039,6 +14254,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" }, { @@ -13046,6 +14262,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -13054,6 +14271,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -13063,6 +14281,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -13072,6 +14291,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "exists", "value": "", @@ -13089,6 +14309,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -13098,6 +14319,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -13112,6 +14334,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -13121,6 +14344,7 @@ [ { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -13135,6 +14359,7 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -13144,6 +14369,7 @@ [ { "type": "attribute", + "namespace": null, "name": "id", "action": "exists", "value": "", @@ -13158,10 +14384,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "end", "value": "men", @@ -13173,10 +14401,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "any", "value": "ers m", @@ -13188,10 +14418,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "start", "value": "bro", @@ -13203,10 +14435,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -13218,10 +14452,12 @@ [ { "type": "tag", + "namespace": null, "name": "div" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -13229,6 +14465,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "brothers", @@ -13240,6 +14477,7 @@ [ { "type": "tag", + "namespace": null, "name": "dl" }, { @@ -13247,6 +14485,7 @@ }, { "type": "tag", + "namespace": null, "name": "ol" } ] @@ -13255,6 +14494,7 @@ [ { "type": "tag", + "namespace": null, "name": "dl" }, { @@ -13262,6 +14502,7 @@ }, { "type": "tag", + "namespace": null, "name": "ol" } ] @@ -13270,6 +14511,7 @@ [ { "type": "tag", + "namespace": null, "name": "elem" }, { @@ -13283,7 +14525,8 @@ "data": [ [ { - "type": "universal" + "type": "universal", + "namespace": null } ] ] @@ -13297,10 +14540,12 @@ [ { "type": "tag", + "namespace": null, "name": "em" }, { "type": "attribute", + "namespace": null, "name": "nopass", "action": "element", "value": "copyright", @@ -13312,10 +14557,12 @@ [ { "type": "tag", + "namespace": null, "name": "em" }, { "type": "attribute", + "namespace": null, "name": "rel", "action": "element", "value": "copyright", @@ -13327,6 +14574,7 @@ [ { "type": "tag", + "namespace": null, "name": "foo_bar" } ] @@ -13335,6 +14583,7 @@ [ { "type": "tag", + "namespace": null, "name": "form" } ] @@ -13343,6 +14592,7 @@ [ { "type": "tag", + "namespace": null, "name": "form" }, { @@ -13350,6 +14600,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "foo:bar", @@ -13361,6 +14612,7 @@ [ { "type": "tag", + "namespace": null, "name": "form" }, { @@ -13368,6 +14620,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "test.foo[5]bar", @@ -13379,6 +14632,7 @@ [ { "type": "tag", + "namespace": null, "name": "form" }, { @@ -13386,6 +14640,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "台北", @@ -13397,6 +14652,7 @@ [ { "type": "tag", + "namespace": null, "name": "form" }, { @@ -13404,6 +14660,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "foo:bar", @@ -13415,6 +14672,7 @@ [ { "type": "tag", + "namespace": null, "name": "form" }, { @@ -13422,6 +14680,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "test.foo[5]bar", @@ -13433,6 +14692,7 @@ [ { "type": "tag", + "namespace": null, "name": "form" }, { @@ -13440,6 +14700,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "台北Táiběi", @@ -13451,6 +14712,7 @@ [ { "type": "tag", + "namespace": null, "name": "form" }, { @@ -13458,10 +14720,12 @@ }, { "type": "tag", + "namespace": null, "name": "label" }, { "type": "attribute", + "namespace": null, "name": "for", "action": "exists", "value": "", @@ -13473,6 +14737,7 @@ [ { "type": "tag", + "namespace": null, "name": "form" }, { @@ -13486,6 +14751,7 @@ [ { "type": "tag", + "namespace": null, "name": "form" }, { @@ -13499,10 +14765,12 @@ [ { "type": "tag", + "namespace": null, "name": "form" }, { "type": "attribute", + "namespace": null, "name": "title", "action": "any", "value": "commas,", @@ -13512,10 +14780,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "value", "action": "equals", "value": "#commaOne,#commaTwo", @@ -13527,6 +14797,7 @@ [ { "type": "tag", + "namespace": null, "name": "h1" } ] @@ -13535,6 +14806,7 @@ [ { "type": "tag", + "namespace": null, "name": "h1" }, { @@ -13542,6 +14814,7 @@ }, { "type": "tag", + "namespace": null, "name": "ul" } ] @@ -13550,10 +14823,12 @@ [ { "type": "tag", + "namespace": null, "name": "h1" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "exists", "value": "", @@ -13565,10 +14840,12 @@ [ { "type": "tag", + "namespace": null, "name": "h1" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "exists", "value": "", @@ -13580,12 +14857,14 @@ [ { "type": "tag", + "namespace": null, "name": "h2" } ], [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -13596,6 +14875,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -13604,12 +14884,14 @@ [ { "type": "tag", + "namespace": null, "name": "h2" } ], [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -13620,6 +14902,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -13628,12 +14911,14 @@ [ { "type": "tag", + "namespace": null, "name": "h2" } ], [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -13644,6 +14929,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -13652,12 +14938,14 @@ [ { "type": "tag", + "namespace": null, "name": "h2" } ], [ { "type": "tag", + "namespace": null, "name": "h1" } ] @@ -13666,12 +14954,14 @@ [ { "type": "tag", + "namespace": null, "name": "h2" } ], [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -13682,6 +14972,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -13690,12 +14981,14 @@ [ { "type": "tag", + "namespace": null, "name": "h2" } ], [ { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "qunit-fixture", @@ -13706,6 +14999,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -13714,6 +15008,7 @@ [ { "type": "tag", + "namespace": null, "name": "html" } ] @@ -13722,6 +15017,7 @@ [ { "type": "tag", + "namespace": null, "name": "input" } ] @@ -13730,10 +15026,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "data-attr", "action": "equals", "value": "𝌆A", @@ -13745,10 +15043,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "data-comma", "action": "equals", "value": "0,1", @@ -13760,10 +15060,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "data-comma", "action": "equals", "value": "0,1", @@ -13775,10 +15077,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "data-pos", "action": "equals", "value": ":first", @@ -13790,10 +15094,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "data-pos", "action": "equals", "value": ":first", @@ -13805,10 +15111,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "idTest", @@ -13820,10 +15128,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "types_all", @@ -13835,10 +15145,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "end", "value": "[bar]", @@ -13850,10 +15162,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "end", "value": "bar]", @@ -13865,10 +15179,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "end", "value": "foo[bar]", @@ -13880,10 +15196,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "any", "value": "[bar]", @@ -13895,10 +15213,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "any", "value": "foo[bar]", @@ -13910,10 +15230,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "action", @@ -13925,10 +15247,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "action", @@ -13940,10 +15264,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "foo[bar]", @@ -13955,10 +15281,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "types[]", @@ -13970,10 +15298,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "action", @@ -13985,10 +15315,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "foo bar", @@ -14000,10 +15332,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "foo.baz", @@ -14015,10 +15349,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "foo[baz]", @@ -14030,10 +15366,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "start", "value": "foo[", @@ -14045,10 +15383,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "start", "value": "foo[bar]", @@ -14060,10 +15400,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "title", "action": "equals", "value": "Don't click me", @@ -14075,10 +15417,12 @@ [ { "type": "tag", + "namespace": null, "name": "input" }, { "type": "attribute", + "namespace": null, "name": "value", "action": "equals", "value": "Test", @@ -14090,6 +15434,7 @@ [ { "type": "tag", + "namespace": null, "name": "li" } ] @@ -14098,6 +15443,7 @@ [ { "type": "tag", + "namespace": null, "name": "li" }, { @@ -14105,6 +15451,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" } ] @@ -14113,10 +15460,12 @@ [ { "type": "tag", + "namespace": null, "name": "li" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attr-child-boosh", @@ -14124,6 +15473,7 @@ }, { "type": "attribute", + "namespace": null, "name": "attr", "action": "equals", "value": "boosh", @@ -14135,10 +15485,12 @@ [ { "type": "tag", + "namespace": null, "name": "li" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "item_1", @@ -14146,6 +15498,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "first", @@ -14157,10 +15510,12 @@ [ { "type": "tag", + "namespace": null, "name": "li" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "item_1", @@ -14168,6 +15523,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "first", @@ -14175,6 +15531,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "nonexistent", @@ -14186,10 +15543,12 @@ [ { "type": "tag", + "namespace": null, "name": "li" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "item_1", @@ -14197,6 +15556,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "nonexistent", @@ -14208,10 +15568,12 @@ [ { "type": "tag", + "namespace": null, "name": "li" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "item_3", @@ -14219,6 +15581,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "exists", "value": "", @@ -14230,6 +15593,7 @@ [ { "type": "tag", + "namespace": null, "name": "li" }, { @@ -14243,6 +15607,7 @@ [ { "type": "tag", + "namespace": null, "name": "li" }, { @@ -14256,6 +15621,7 @@ [ { "type": "tag", + "namespace": null, "name": "li" }, { @@ -14269,6 +15635,7 @@ [ { "type": "tag", + "namespace": null, "name": "li" }, { @@ -14290,6 +15657,7 @@ [ { "type": "tag", + "namespace": null, "name": "meta" }, { @@ -14297,6 +15665,7 @@ }, { "type": "tag", + "namespace": null, "name": "property" }, { @@ -14304,6 +15673,7 @@ }, { "type": "tag", + "namespace": null, "name": "thing" } ] @@ -14312,6 +15682,7 @@ [ { "type": "tag", + "namespace": null, "name": "nonexistent" } ] @@ -14320,6 +15691,7 @@ [ { "type": "tag", + "namespace": null, "name": "ol" }, { @@ -14327,10 +15699,12 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { "type": "attribute", + "namespace": null, "name": "attr", "action": "equals", "value": "boosh", @@ -14347,6 +15721,7 @@ [ { "type": "tag", + "namespace": null, "name": "ol" }, { @@ -14354,6 +15729,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" } ] @@ -14362,6 +15738,7 @@ [ { "type": "tag", + "namespace": null, "name": "ol" }, { @@ -14369,6 +15746,7 @@ }, { "type": "tag", + "namespace": null, "name": "ol" }, { @@ -14376,10 +15754,12 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attr-child-boosh", @@ -14387,6 +15767,7 @@ }, { "type": "attribute", + "namespace": null, "name": "attr", "action": "equals", "value": "boosh", @@ -14398,10 +15779,12 @@ [ { "type": "tag", + "namespace": null, "name": "ol" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "list", @@ -14412,10 +15795,12 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attr-child-boosh", @@ -14423,6 +15808,7 @@ }, { "type": "attribute", + "namespace": null, "name": "attr", "action": "equals", "value": "boosh", @@ -14434,10 +15820,12 @@ [ { "type": "tag", + "namespace": null, "name": "ol" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "list", @@ -14448,10 +15836,12 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "attr-child-boosh", @@ -14459,6 +15849,7 @@ }, { "type": "attribute", + "namespace": null, "name": "attr", "action": "equals", "value": "boosh", @@ -14470,6 +15861,7 @@ [ { "type": "tag", + "namespace": null, "name": "ol" }, { @@ -14483,6 +15875,7 @@ [ { "type": "tag", + "namespace": null, "name": "ol" }, { @@ -14496,6 +15889,7 @@ [ { "type": "tag", + "namespace": null, "name": "ol" }, { @@ -14509,6 +15903,7 @@ [ { "type": "tag", + "namespace": null, "name": "ol" }, { @@ -14516,6 +15911,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" } ] @@ -14524,6 +15920,7 @@ [ { "type": "tag", + "namespace": null, "name": "ol" }, { @@ -14531,6 +15928,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -14538,6 +15936,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" } ] @@ -14546,6 +15945,7 @@ [ { "type": "tag", + "namespace": null, "name": "option" } ] @@ -14554,6 +15954,7 @@ [ { "type": "tag", + "namespace": null, "name": "option" }, { @@ -14572,6 +15973,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" } ] @@ -14580,6 +15982,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14587,6 +15990,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -14595,6 +15999,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14602,6 +16007,7 @@ }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "blog", @@ -14613,6 +16019,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14620,6 +16027,7 @@ }, { "type": "tag", + "namespace": null, "name": "div" } ] @@ -14628,19 +16036,22 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null }, { "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -14648,6 +16059,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14655,6 +16067,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -14663,6 +16076,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14670,10 +16084,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "blog", @@ -14685,6 +16101,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14692,6 +16109,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -14700,6 +16118,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14707,10 +16126,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "any", "value": "#", @@ -14722,6 +16143,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14729,10 +16151,12 @@ }, { "type": "tag", + "namespace": null, "name": "a" }, { "type": "attribute", + "namespace": null, "name": "href", "action": "start", "value": "#", @@ -14744,10 +16168,12 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "blargh", @@ -14759,10 +16185,12 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "firstp", @@ -14773,6 +16201,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -14781,10 +16210,12 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "strong", @@ -14796,12 +16227,14 @@ [ { "type": "tag", + "namespace": null, "name": "p" } ], [ { "type": "tag", + "namespace": null, "name": "div" }, { @@ -14809,6 +16242,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -14817,12 +16251,14 @@ [ { "type": "tag", + "namespace": null, "name": "p" } ], [ { "type": "tag", + "namespace": null, "name": "a" } ] @@ -14831,10 +16267,12 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "first", @@ -14845,6 +16283,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -14853,10 +16292,12 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "foo", @@ -14868,10 +16309,12 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "odd", @@ -14883,6 +16326,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14896,6 +16340,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14905,6 +16350,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "not", "value": ")", @@ -14916,6 +16362,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14925,6 +16372,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "not", "value": ")", @@ -14936,6 +16384,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14949,6 +16398,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14958,6 +16408,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ] @@ -14969,6 +16420,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -14978,6 +16430,7 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ] @@ -14989,6 +16442,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -15002,6 +16456,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -15011,12 +16466,14 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ], [ { "type": "tag", + "namespace": null, "name": "p" } ] @@ -15028,6 +16485,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -15037,18 +16495,21 @@ [ { "type": "tag", + "namespace": null, "name": "a" } ], [ { "type": "tag", + "namespace": null, "name": "p" } ], [ { "type": "tag", + "namespace": null, "name": "b" } ] @@ -15060,6 +16521,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -15069,6 +16531,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" } ] @@ -15080,6 +16543,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -15089,12 +16553,14 @@ [ { "type": "tag", + "namespace": null, "name": "p" } ], [ { "type": "tag", + "namespace": null, "name": "a" } ] @@ -15106,6 +16572,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -15119,6 +16586,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -15132,6 +16600,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -15145,6 +16614,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -15152,6 +16622,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -15160,6 +16631,7 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { @@ -15167,6 +16639,7 @@ }, { "type": "tag", + "namespace": null, "name": "a" } ] @@ -15175,10 +16648,12 @@ [ { "type": "tag", + "namespace": null, "name": "p" }, { "type": "attribute", + "namespace": null, "name": "lang", "action": "equals", "value": "en", @@ -15189,6 +16664,7 @@ }, { "type": "tag", + "namespace": null, "name": "p" } ] @@ -15197,6 +16673,7 @@ [ { "type": "tag", + "namespace": null, "name": "param" } ] @@ -15205,10 +16682,12 @@ [ { "type": "tag", + "namespace": null, "name": "property" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "prop2", @@ -15220,6 +16699,7 @@ [ { "type": "tag", + "namespace": null, "name": "select" } ] @@ -15228,10 +16708,12 @@ [ { "type": "tag", + "namespace": null, "name": "select" }, { "type": "attribute", + "namespace": null, "name": "name", "action": "equals", "value": "select2", @@ -15242,6 +16724,7 @@ }, { "type": "tag", + "namespace": null, "name": "option" }, { @@ -15255,6 +16738,7 @@ [ { "type": "tag", + "namespace": null, "name": "soap:envelope" } ] @@ -15263,6 +16747,7 @@ [ { "type": "tag", + "namespace": null, "name": "span" } ] @@ -15271,6 +16756,7 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { @@ -15278,6 +16764,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -15286,6 +16773,7 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { @@ -15293,6 +16781,7 @@ }, { "type": "tag", + "namespace": null, "name": "span" } ] @@ -15301,6 +16790,7 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { @@ -15308,6 +16798,7 @@ }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "level3_2", @@ -15319,10 +16810,12 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "dupL1", @@ -15334,10 +16827,12 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "span_bar", @@ -15349,10 +16844,12 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "span_foo", @@ -15364,10 +16861,12 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { "type": "attribute", + "namespace": null, "name": "class", "action": "element", "value": "span_wtf", @@ -15379,6 +16878,7 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { @@ -15390,7 +16890,8 @@ "type": "child" }, { - "type": "universal" + "type": "universal", + "namespace": null } ] ], @@ -15398,6 +16899,7 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { @@ -15411,6 +16913,7 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { @@ -15424,10 +16927,12 @@ [ { "type": "tag", + "namespace": null, "name": "span" }, { "type": "attribute", + "namespace": null, "name": "lang", "action": "equals", "value": "中文", @@ -15439,6 +16944,7 @@ [ { "type": "tag", + "namespace": null, "name": "strong" } ] @@ -15447,10 +16953,12 @@ [ { "type": "tag", + "namespace": null, "name": "strong" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "strong", @@ -15462,10 +16970,12 @@ [ { "type": "tag", + "namespace": null, "name": "tostring" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "toString", @@ -15477,6 +16987,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15484,6 +16995,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" } ] @@ -15492,6 +17004,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15499,6 +17012,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -15512,6 +17026,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15519,6 +17034,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -15532,6 +17048,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15539,6 +17056,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -15552,6 +17070,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15559,6 +17078,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -15572,6 +17092,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15579,6 +17100,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -15592,6 +17114,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15599,6 +17122,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -15612,6 +17136,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15619,6 +17144,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -15632,6 +17158,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15639,6 +17166,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -15652,6 +17180,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15659,6 +17188,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -15672,6 +17202,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15679,6 +17210,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" }, { @@ -15692,10 +17224,12 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { "type": "attribute", + "namespace": null, "name": "id", "action": "equals", "value": "first", @@ -15707,6 +17241,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15720,6 +17255,7 @@ [ { "type": "tag", + "namespace": null, "name": "ul" }, { @@ -15727,6 +17263,7 @@ }, { "type": "tag", + "namespace": null, "name": "li" } ] diff --git a/src/__fixtures__/tests.ts b/src/__fixtures__/tests.ts index 7ea22f9a..5d74e507 100644 --- a/src/__fixtures__/tests.ts +++ b/src/__fixtures__/tests.ts @@ -1,6 +1,11 @@ -import { Selector } from ".."; +import { Selector, Options } from ".."; -export const tests: [string, Selector[][], string][] = [ +export const tests: [ + selector: string, + expected: Selector[][], + message: string, + options?: Options +][] = [ // Tag names [ "div", @@ -8,6 +13,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "tag", + namespace: null, name: "div", }, ], @@ -20,6 +26,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "universal", + namespace: null, }, ], ], @@ -33,6 +40,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "tag", + namespace: null, name: "div", }, { @@ -40,6 +48,7 @@ export const tests: [string, Selector[][], string][] = [ }, { type: "tag", + namespace: null, name: "div", }, ], @@ -52,6 +61,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "tag", + namespace: null, name: "div", }, { @@ -59,6 +69,7 @@ export const tests: [string, Selector[][], string][] = [ }, { type: "tag", + namespace: null, name: "div", }, ], @@ -71,6 +82,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "tag", + namespace: null, name: "div", }, { @@ -78,6 +90,7 @@ export const tests: [string, Selector[][], string][] = [ }, { type: "tag", + namespace: null, name: "div", }, ], @@ -90,6 +103,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "tag", + namespace: null, name: "div", }, { @@ -97,6 +111,7 @@ export const tests: [string, Selector[][], string][] = [ }, { type: "tag", + namespace: null, name: "div", }, ], @@ -109,6 +124,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "tag", + namespace: null, name: "p", }, { @@ -116,6 +132,7 @@ export const tests: [string, Selector[][], string][] = [ }, { type: "tag", + namespace: null, name: "div", }, ], @@ -130,6 +147,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "id", value: " ", @@ -140,6 +158,7 @@ export const tests: [string, Selector[][], string][] = [ }, { type: "tag", + namespace: null, name: "a", }, ], @@ -152,6 +171,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "class", action: "element", value: " ", @@ -167,6 +187,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "class", action: "element", value: "m™²³", @@ -182,6 +203,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "tag", + namespace: null, name: "a", }, ], @@ -194,6 +216,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "tag", + namespace: null, name: "\uD834\uDF06\uD834\uDF06", }, ], @@ -206,6 +229,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "id", value: "&B", @@ -223,6 +247,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "name", action: "start", value: "foo[", @@ -238,6 +263,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "name", action: "start", value: "foo[bar]", @@ -253,6 +279,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "name", action: "end", value: "[bar]", @@ -268,6 +295,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "href", action: "any", value: "google", @@ -283,6 +311,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "value", action: "equals", value: "\nsome text\n", @@ -298,6 +327,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "name", action: "equals", value: "foo.baz", @@ -313,6 +343,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "name", action: "equals", value: "foo[bar]", @@ -328,6 +359,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "xml:test", action: "exists", value: "", @@ -343,6 +375,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, name: "name", action: "equals", value: "foo ~ < > , bar", @@ -360,6 +393,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "id", value: ".identifier", @@ -370,6 +404,20 @@ export const tests: [string, Selector[][], string][] = [ "ID starting with a dot", ], + // Pseudo elements + [ + "::foo", + [ + [ + { + type: "pseudo-element", + name: "foo", + }, + ], + ], + "pseudo-element", + ], + // Pseudo selectors [ ":foo", @@ -410,6 +458,19 @@ export const tests: [string, Selector[][], string][] = [ ], "pseudo selector with data", ], + [ + ':contains("(a((foo\\\\\\))))")', + [ + [ + { + type: "pseudo", + name: "contains", + data: "(a((foo\\))))", + }, + ], + ], + "pseudo selector with escaped data", + ], [ ":icontains('')", [ @@ -444,12 +505,14 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "tag", + namespace: null, name: "a", }, ], [ { type: "tag", + namespace: null, name: "b", }, ], @@ -468,12 +531,14 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "tag", + namespace: null, name: "h1", }, ], [ { type: "tag", + namespace: null, name: "p", }, ], @@ -494,6 +559,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "id", value: "types_all", @@ -509,6 +575,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "name", value: "foo bar", @@ -524,6 +591,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "name", value: "foo.baz", @@ -539,6 +607,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "name", value: "foo[baz]", @@ -554,6 +623,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "data-attr", value: "foo_baz']", @@ -569,6 +639,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "data-attr", value: "'", @@ -584,6 +655,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "data-attr", value: "\\", @@ -599,6 +671,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "data-attr", value: "\\'", @@ -614,6 +687,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "data-attr", value: "\\\\", @@ -629,6 +703,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "data-attr", value: "\\\\", @@ -644,6 +719,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "data-attr", value: "\\\\", @@ -659,6 +735,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "data-attr", value: "\\\\", @@ -674,6 +751,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "data-attr", value: "\u4e00", @@ -689,6 +767,7 @@ export const tests: [string, Selector[][], string][] = [ [ { type: "attribute", + namespace: null, action: "equals", name: "data-attr", value: "\uD834\uDF06A", @@ -698,4 +777,160 @@ export const tests: [string, Selector[][], string][] = [ ], "Long numeric escape (non-BMP)", ], + + // Options + [ + "fOo[baR]", + [ + [ + { + name: "fOo", + type: "tag", + namespace: null, + }, + { + action: "exists", + ignoreCase: false, + name: "baR", + type: "attribute", + namespace: null, + value: "", + }, + ], + ], + "XML mode", + { xmlMode: true }, + ], + [ + "fOo[baR]", + [ + [ + { + name: "foo", + type: "tag", + namespace: null, + }, + { + action: "exists", + ignoreCase: false, + name: "baR", + type: "attribute", + namespace: null, + value: "", + }, + ], + ], + "`lowerCaseAttributeNames` option", + { lowerCaseAttributeNames: false }, + ], + [ + "fOo[baR]", + [ + [ + { + name: "fOo", + type: "tag", + namespace: null, + }, + { + action: "exists", + ignoreCase: false, + name: "bar", + type: "attribute", + namespace: null, + value: "", + }, + ], + ], + "`lowerCaseTags` option", + { lowerCaseTags: false }, + ], + + // Namespaces + [ + "foo|bar", + [ + [ + { + name: "bar", + type: "tag", + namespace: "foo", + }, + ], + ], + "basic tag namespace", + ], + [ + "*|bar", + [ + [ + { + name: "bar", + type: "tag", + namespace: "*", + }, + ], + ], + "star tag namespace", + ], + [ + "*|*", + [ + [ + { + type: "universal", + namespace: "*", + }, + ], + ], + "universal with namespace", + ], + [ + "[foo|bar]", + [ + [ + { + action: "exists", + ignoreCase: false, + name: "bar", + type: "attribute", + namespace: "foo", + value: "", + }, + ], + ], + "basic attribute namespace, existential", + ], + [ + "[foo|bar='baz' i]", + [ + [ + { + action: "equals", + ignoreCase: true, + name: "bar", + type: "attribute", + namespace: "foo", + value: "baz", + }, + ], + ], + "basic attribute namespace, equality", + ], + [ + "[*|bar='baz' i]", + [ + [ + { + action: "equals", + ignoreCase: true, + name: "bar", + type: "attribute", + namespace: "*", + value: "baz", + }, + ], + ], + "star attribute namespace", + ], ]; diff --git a/src/parse.spec.ts b/src/parse.spec.ts index 9ebe3738..02ddb55e 100644 --- a/src/parse.spec.ts +++ b/src/parse.spec.ts @@ -3,8 +3,10 @@ import { parse } from "."; import { tests } from "./__fixtures__/tests"; describe("parse own tests", () => { - for (const [selector, expected, message] of tests) { - test(message, () => expect(parse(selector)).toStrictEqual(expected)); + for (const [selector, expected, message, options] of tests) { + test(message, () => + expect(parse(selector, options)).toStrictEqual(expected) + ); } }); @@ -18,3 +20,31 @@ describe("Collected selectors", () => { } }); }); + +const broken = [ + "[", + "(", + "{", + "()", + "<>", + "{}", + ",", + ",a", + "a,", + "[id=012345678901234567890123456789", + "input[name=foo.baz]", + "input[name=foo[baz]]", + ':has("p")', + ":has(p", + ":foo(p()", + "#", + "##foo", +]; + +describe("Broken selectors", () => { + for (const selector of broken) { + it(`should not parse — ${selector}`, () => { + expect(() => parse(selector)).toThrow(Error); + }); + } +}); diff --git a/src/parse.ts b/src/parse.ts index 2f9d2849..677a029d 100644 --- a/src/parse.ts +++ b/src/parse.ts @@ -1,10 +1,18 @@ -"use strict"; - -export default parse; - export interface Options { + /** + * When false, tag names will not be lowercased. + * @default true + */ lowerCaseAttributeNames?: boolean; + /** + * When false, attribute names will not be lowercased. + * @default true + */ lowerCaseTags?: boolean; + /** + * When `true`, `xmlMode` implies both `lowerCaseTags` and `lowerCaseAttributeNames` are set to `false`. + * @default false + */ xmlMode?: boolean; } @@ -22,6 +30,7 @@ export interface AttributeSelector { action: AttributeAction; value: string; ignoreCase: boolean; + namespace: string | null; } type DataType = Selector[][] | null | string; @@ -40,10 +49,12 @@ export interface PseudoElement { export interface TagSelector { type: "tag"; name: string; + namespace: string | null; } export interface UniversalSelector { type: "universal"; + namespace: string | null; } export interface Traversal { @@ -67,10 +78,10 @@ export type TraversalType = | "parent" | "sibling"; -const reName = /^[^\\]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/; +const reName = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/; const reEscape = /\\([\da-f]{1,6}\s?|(\s)|.)/gi; // Modified version of https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L87 -const reAttr = /^\s*((?:\\.|[\w\u00b0-\uFFFF-])+)\s*(?:(\S?)=\s*(?:(['"])((?:[^\\]|\\[^])*?)\3|(#?(?:\\.|[\w\u00b0-\uFFFF-])*)|)|)\s*(i)?\]/; +const reAttr = /^\s*(?:(\*|[-\w]*)\|)?((?:\\.|[\w\u00b0-\uFFFF-])+)\s*(?:(\S?)=\s*(?:(['"])((?:[^\\]|\\[^])*?)\4|(#?(?:\\.|[\w\u00b0-\uFFFF-])*)|)|)\s*([iI])?\]/; const actionTypes: { [key: string]: AttributeAction } = { undefined: "exists", @@ -105,6 +116,22 @@ const unpackPseudos = new Set([ "host-context", ]); +const traversalNames = new Set([ + "descendant", + ...Object.keys(Traversals).map((k) => Traversals[k]), +]); + +/** + * Checks whether a specific selector is a traversal. + * This is useful eg. in swapping the order of elements that + * are not traversals. + * + * @param selector Selector to check. + */ +export function isTraversal(selector: Selector): selector is Traversal { + return traversalNames.has(selector.type as TraversalType); +} + const stripQuotesFromPseudos = new Set(["contains", "icontains"]); const quotes = new Set(['"', "'"]); @@ -131,13 +158,25 @@ function isWhitespace(c: string) { return c === " " || c === "\n" || c === "\t" || c === "\f" || c === "\r"; } -function parse(selector: string, options?: Options): Selector[][] { +/** + * Parses `selector`, optionally with the passed `options`. + * + * @param selector Selector to parse. + * @param options Options for parsing. + * @returns Returns a two-dimensional array. + * The first dimension represents selectors separated by commas (eg. `sub1, sub2`), + * the second contains the relevant tokens for that selector. + */ +export default function parse( + selector: string, + options?: Options +): Selector[][] { const subselects: Selector[][] = []; - selector = parseSelector(subselects, `${selector}`, options); + const endIndex = parseSelector(subselects, `${selector}`, options, 0); - if (selector !== "") { - throw new Error(`Unmatched selector: ${selector}`); + if (endIndex < selector.length) { + throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`); } return subselects; @@ -146,26 +185,29 @@ function parse(selector: string, options?: Options): Selector[][] { function parseSelector( subselects: Selector[][], selector: string, - options: Options = {} -): string { + options: Options = {}, + selectorIndex: number +): number { let tokens: Selector[] = []; let sawWS = false; - function getName(): string { - const match = selector.match(reName); + function getName(offset: number): string { + const match = selector.slice(selectorIndex + offset).match(reName); if (!match) { - throw new Error(`Expected name, found ${selector}`); + throw new Error( + `Expected name, found ${selector.slice(selectorIndex)}` + ); } - const [sub] = match; - selector = selector.substr(sub.length); - return unescapeCSS(sub); + const [name] = match; + selectorIndex += offset + name.length; + return unescapeCSS(name); } - function stripWhitespace(start: number) { - while (isWhitespace(selector.charAt(start))) start++; - selector = selector.substr(start); + function stripWhitespace(offset: number) { + while (isWhitespace(selector.charAt(selectorIndex + offset))) offset++; + selectorIndex += offset; } function isEscaped(pos: number): boolean { @@ -175,15 +217,22 @@ function parseSelector( return (slashCount & 1) === 1; } + function ensureNotTraversal() { + if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) { + throw new Error("Did not expect successive traversals."); + } + } + stripWhitespace(0); while (selector !== "") { - const firstChar = selector.charAt(0); + const firstChar = selector.charAt(selectorIndex); if (isWhitespace(firstChar)) { sawWS = true; stripWhitespace(1); } else if (firstChar in Traversals) { + ensureNotTraversal(); tokens.push({ type: Traversals[firstChar] }); sawWS = false; @@ -198,36 +247,37 @@ function parseSelector( stripWhitespace(1); } else { if (sawWS) { - if (tokens.length > 0) { - tokens.push({ type: "descendant" }); - } + ensureNotTraversal(); + tokens.push({ type: "descendant" }); sawWS = false; } - if (firstChar === "*") { - selector = selector.substr(1); - tokens.push({ type: "universal" }); - } else if (firstChar in attribSelectors) { + if (firstChar in attribSelectors) { const [name, action] = attribSelectors[firstChar]; - selector = selector.substr(1); tokens.push({ type: "attribute", name, action, - value: getName(), + value: getName(1), ignoreCase: false, + namespace: null, }); } else if (firstChar === "[") { - selector = selector.substr(1); - const attributeMatch = selector.match(reAttr); + const attributeMatch = selector + .slice(selectorIndex + 1) + .match(reAttr); + if (!attributeMatch) { throw new Error( - `Malformed attribute selector: ${selector}` + `Malformed attribute selector: ${selector.slice( + selectorIndex + )}` ); } const [ completeSelector, + namespace = null, baseName, actionType, , @@ -236,7 +286,7 @@ function parseSelector( ignoreCase, ] = attributeMatch; - selector = selector.substr(completeSelector.length); + selectorIndex += completeSelector.length + 1; let name = unescapeCSS(baseName); if (options.lowerCaseAttributeNames ?? !options.xmlMode) { @@ -248,61 +298,62 @@ function parseSelector( name, action: actionTypes[actionType], value: unescapeCSS(value), + namespace, ignoreCase: !!ignoreCase, }); } else if (firstChar === ":") { - if (selector.charAt(1) === ":") { - selector = selector.substr(2); + if (selector.charAt(selectorIndex + 1) === ":") { tokens.push({ type: "pseudo-element", - name: getName().toLowerCase(), + name: getName(2).toLowerCase(), }); continue; } - selector = selector.substr(1); - - const name = getName().toLowerCase(); + const name = getName(1).toLowerCase(); let data: DataType = null; - if (selector.startsWith("(")) { + if (selector.charAt(selectorIndex) === "(") { if (unpackPseudos.has(name)) { - const quot = selector.charAt(1); - const quoted = quotes.has(quot); - - selector = selector.substr(quoted ? 2 : 1); - - data = []; - selector = parseSelector(data, selector, options); - - if (quoted) { - if (!selector.startsWith(quot)) { - throw new Error(`Unmatched quotes in :${name}`); - } else { - selector = selector.substr(1); - } + if (quotes.has(selector.charAt(selectorIndex + 1))) { + throw new Error( + `Pseudo-selector ${name} cannot be quoted` + ); } - if (!selector.startsWith(")")) { + data = []; + selectorIndex = parseSelector( + data, + selector, + options, + selectorIndex + 1 + ); + + if (selector.charAt(selectorIndex) !== ")") { throw new Error( `Missing closing parenthesis in :${name} (${selector})` ); } - selector = selector.substr(1); + selectorIndex += 1; } else { - let pos = 1; + selectorIndex += 1; + const start = selectorIndex; let counter = 1; - for (; counter > 0 && pos < selector.length; pos++) { + for ( + ; + counter > 0 && selectorIndex < selector.length; + selectorIndex++ + ) { if ( - selector.charAt(pos) === "(" && - !isEscaped(pos) + selector.charAt(selectorIndex) === "(" && + !isEscaped(selectorIndex) ) { counter++; } else if ( - selector.charAt(pos) === ")" && - !isEscaped(pos) + selector.charAt(selectorIndex) === ")" && + !isEscaped(selectorIndex) ) { counter--; } @@ -312,8 +363,7 @@ function parseSelector( throw new Error("Parenthesis not matched"); } - data = selector.substr(1, pos - 2); - selector = selector.substr(pos); + data = selector.slice(start, selectorIndex - 1); if (stripQuotesFromPseudos.has(name)) { const quot = data.charAt(0); @@ -328,30 +378,58 @@ function parseSelector( } tokens.push({ type: "pseudo", name, data }); - } else if (reName.test(selector)) { - let name = getName(); + } else { + let namespace = null; + let name: string; + + if (firstChar === "*") { + selectorIndex += 1; + name = "*"; + } else if (reName.test(selector.slice(selectorIndex))) { + name = getName(0); + } else { + /* + * We have finished parsing the selector. + * Remove descendant tokens at the end if they exist, + * and return the last index, so that parsing can be + * picked up from here. + */ + if ( + tokens.length && + tokens[tokens.length - 1].type === "descendant" + ) { + tokens.pop(); + } + addToken(subselects, tokens); + return selectorIndex; + } - if (options.lowerCaseTags ?? !options.xmlMode) { - name = name.toLowerCase(); + if (selector.charAt(selectorIndex) === "|") { + namespace = name; + if (selector.charAt(selectorIndex + 1) === "*") { + name = "*"; + selectorIndex += 2; + } else { + name = getName(1); + } } - tokens.push({ type: "tag", name }); - } else { - if ( - tokens.length && - tokens[tokens.length - 1].type === "descendant" - ) { - tokens.pop(); + if (name === "*") { + tokens.push({ type: "universal", namespace }); + } else { + if (options.lowerCaseTags ?? !options.xmlMode) { + name = name.toLowerCase(); + } + + tokens.push({ type: "tag", name, namespace }); } - addToken(subselects, tokens); - return selector; } } } addToken(subselects, tokens); - return selector; + return selectorIndex; } function addToken(subselects: Selector[][], tokens: Selector[]) { diff --git a/src/stringify.spec.ts b/src/stringify.spec.ts index 37a9a7d6..c4211523 100644 --- a/src/stringify.spec.ts +++ b/src/stringify.spec.ts @@ -4,9 +4,11 @@ import { tests } from "./__fixtures__/tests"; describe("Stringify & re-parse", () => { describe("Own tests", () => { - for (const [selector, expected, message] of tests) { + for (const [selector, expected, message, options] of tests) { test(`${message} (${selector})`, () => { - expect(parse(stringify(expected))).toStrictEqual(expected); + expect(parse(stringify(expected), options)).toStrictEqual( + expected + ); }); } }); diff --git a/src/stringify.ts b/src/stringify.ts index b60b8cfe..f7ba92ca 100644 --- a/src/stringify.ts +++ b/src/stringify.ts @@ -19,10 +19,17 @@ const charsToEscape = new Set([ "]", " ", "\\", + "(", + ")", ]); -export default function stringify(token: Selector[][]): string { - return token.map(stringifySubselector).join(", "); +/** + * Turns `selector` back into a string. + * + * @param selector Selector to stringify. + */ +export default function stringify(selector: Selector[][]): string { + return selector.map(stringifySubselector).join(", "); } function stringifySubselector(token: Selector[]): string { @@ -43,10 +50,10 @@ function stringifyToken(token: Selector): string { case "descendant": return " "; case "universal": - return "*"; + return `${getNamespace(token.namespace)}*`; case "tag": - return escapeName(token.name); + return getNamespacedName(token); case "pseudo-element": return `::${escapeName(token.name)}`; @@ -54,35 +61,54 @@ function stringifyToken(token: Selector): string { case "pseudo": if (token.data === null) return `:${escapeName(token.name)}`; if (typeof token.data === "string") { - return `:${escapeName(token.name)}(${token.data})`; + return `:${escapeName(token.name)}(${escapeName(token.data)})`; } return `:${escapeName(token.name)}(${stringify(token.data)})`; - case "attribute": - if (token.action === "exists") { - return `[${escapeName(token.name)}]`; - } + case "attribute": { if ( token.name === "id" && token.action === "equals" && - !token.ignoreCase + !token.ignoreCase && + !token.namespace ) { return `#${escapeName(token.value)}`; } if ( token.name === "class" && token.action === "element" && - !token.ignoreCase + !token.ignoreCase && + !token.namespace ) { return `.${escapeName(token.value)}`; } - return `[${escapeName(token.name)}${ - actionTypes[token.action] - }='${escapeName(token.value)}'${token.ignoreCase ? "i" : ""}]`; + const name = getNamespacedName(token); + + if (token.action === "exists") { + return `[${name}]`; + } + + return `[${name}${actionTypes[token.action]}='${escapeName( + token.value + )}'${token.ignoreCase ? "i" : ""}]`; + } } } +function getNamespacedName(token: { + name: string; + namespace: string | null; +}): string { + return `${getNamespace(token.namespace)}${escapeName(token.name)}`; +} + +function getNamespace(namespace: string | null): string { + return namespace + ? `${namespace === "*" ? "*" : escapeName(namespace)}|` + : ""; +} + function escapeName(str: string): string { return str .split("")