mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
Just for fun also parse <?xml-stylesheet attributes
This commit is contained in:
parent
b2295572fe
commit
4a766f350b
@ -151,9 +151,7 @@ parse_sgml_attributes(struct dom_stack *stack, struct dom_scanner *scanner)
|
|||||||
|
|
||||||
assert(dom_scanner_has_tokens(scanner)
|
assert(dom_scanner_has_tokens(scanner)
|
||||||
&& (get_dom_scanner_token(scanner)->type == SGML_TOKEN_ELEMENT_BEGIN
|
&& (get_dom_scanner_token(scanner)->type == SGML_TOKEN_ELEMENT_BEGIN
|
||||||
|| (get_dom_stack_top(stack)->node->type == DOM_NODE_PROCESSING_INSTRUCTION
|
|| (get_dom_stack_top(stack)->node->type == DOM_NODE_PROCESSING_INSTRUCTION)));
|
||||||
&& get_dom_stack_top(stack)->node->data.proc_instruction.type
|
|
||||||
== DOM_PROC_INSTRUCTION_XML)));
|
|
||||||
|
|
||||||
if (get_dom_scanner_token(scanner)->type == SGML_TOKEN_ELEMENT_BEGIN)
|
if (get_dom_scanner_token(scanner)->type == SGML_TOKEN_ELEMENT_BEGIN)
|
||||||
skip_dom_scanner_token(scanner);
|
skip_dom_scanner_token(scanner);
|
||||||
@ -279,6 +277,7 @@ parse_sgml_plain(struct dom_stack *stack, struct dom_scanner *scanner)
|
|||||||
skip_dom_scanner_token(scanner);
|
skip_dom_scanner_token(scanner);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SGML_TOKEN_PROCESS_XML_STYLESHEET:
|
||||||
case SGML_TOKEN_PROCESS_XML:
|
case SGML_TOKEN_PROCESS_XML:
|
||||||
case SGML_TOKEN_PROCESS:
|
case SGML_TOKEN_PROCESS:
|
||||||
copy_struct(&target, token);
|
copy_struct(&target, token);
|
||||||
@ -290,7 +289,8 @@ parse_sgml_plain(struct dom_stack *stack, struct dom_scanner *scanner)
|
|||||||
assert(token->type == SGML_TOKEN_PROCESS_DATA);
|
assert(token->type == SGML_TOKEN_PROCESS_DATA);
|
||||||
|
|
||||||
if (add_sgml_proc_instruction(stack, &target, token)
|
if (add_sgml_proc_instruction(stack, &target, token)
|
||||||
&& target.type == SGML_TOKEN_PROCESS_XML
|
&& (target.type == SGML_TOKEN_PROCESS_XML
|
||||||
|
|| target.type == SGML_TOKEN_PROCESS_XML_STYLESHEET)
|
||||||
&& token->string.length > 0) {
|
&& token->string.length > 0) {
|
||||||
/* Parse the <?xml data="attributes"?>. */
|
/* Parse the <?xml data="attributes"?>. */
|
||||||
struct dom_scanner attr_scanner;
|
struct dom_scanner attr_scanner;
|
||||||
|
@ -47,13 +47,14 @@ static struct dom_scan_table_info sgml_scan_table_info[] = {
|
|||||||
{ INIT_DOM_STRING(str, -1), SGML_TOKEN_##type, SGML_TOKEN_##family }
|
{ INIT_DOM_STRING(str, -1), SGML_TOKEN_##type, SGML_TOKEN_##family }
|
||||||
|
|
||||||
static struct dom_scanner_string_mapping sgml_string_mappings[] = {
|
static struct dom_scanner_string_mapping sgml_string_mappings[] = {
|
||||||
SGML_STRING_MAP("--", NOTATION_COMMENT, NOTATION),
|
SGML_STRING_MAP("--", NOTATION_COMMENT, NOTATION),
|
||||||
SGML_STRING_MAP("ATTLIST", NOTATION_ATTLIST, NOTATION),
|
SGML_STRING_MAP("ATTLIST", NOTATION_ATTLIST, NOTATION),
|
||||||
SGML_STRING_MAP("DOCTYPE", NOTATION_DOCTYPE, NOTATION),
|
SGML_STRING_MAP("DOCTYPE", NOTATION_DOCTYPE, NOTATION),
|
||||||
SGML_STRING_MAP("ELEMENT", NOTATION_ELEMENT, NOTATION),
|
SGML_STRING_MAP("ELEMENT", NOTATION_ELEMENT, NOTATION),
|
||||||
SGML_STRING_MAP("ENTITY", NOTATION_ENTITY, NOTATION),
|
SGML_STRING_MAP("ENTITY", NOTATION_ENTITY, NOTATION),
|
||||||
|
|
||||||
SGML_STRING_MAP("xml", PROCESS_XML, PROCESS),
|
SGML_STRING_MAP("xml", PROCESS_XML, PROCESS),
|
||||||
|
SGML_STRING_MAP("xml-stylesheet", PROCESS_XML_STYLESHEET, PROCESS),
|
||||||
|
|
||||||
DOM_STRING_MAP_END,
|
DOM_STRING_MAP_END,
|
||||||
};
|
};
|
||||||
|
@ -29,6 +29,7 @@ enum sgml_token_type {
|
|||||||
|
|
||||||
SGML_TOKEN_PROCESS, /* <?{ident} */
|
SGML_TOKEN_PROCESS, /* <?{ident} */
|
||||||
SGML_TOKEN_PROCESS_XML, /* <?xml */
|
SGML_TOKEN_PROCESS_XML, /* <?xml */
|
||||||
|
SGML_TOKEN_PROCESS_XML_STYLESHEET,/* <?xml-stylesheet */
|
||||||
SGML_TOKEN_PROCESS_DATA, /* data after <?{ident} until ?> */
|
SGML_TOKEN_PROCESS_DATA, /* data after <?{ident} until ?> */
|
||||||
|
|
||||||
SGML_TOKEN_ELEMENT, /* <{ident}> */
|
SGML_TOKEN_ELEMENT, /* <{ident}> */
|
||||||
|
@ -148,7 +148,6 @@ entity-reference: #
|
|||||||
#text: -
|
#text: -
|
||||||
entity-reference: #xx'
|
entity-reference: #xx'
|
||||||
|
|
||||||
# Test <?>
|
|
||||||
test_output_equals \
|
test_output_equals \
|
||||||
'Parse processing instructions.' \
|
'Parse processing instructions.' \
|
||||||
'<?xml encoding="UTF8"?>
|
'<?xml encoding="UTF8"?>
|
||||||
@ -170,6 +169,14 @@ proc-instruction: xml -> version="1.0" />
|
|||||||
attribute: version -> 1.0
|
attribute: version -> 1.0
|
||||||
proc-instruction: xml -> /'
|
proc-instruction: xml -> /'
|
||||||
|
|
||||||
|
test_output_equals \
|
||||||
|
'Parse XML stylesheet processing instructions.' \
|
||||||
|
'<?xml-stylesheet type="text/xsl" href="url"?>' \
|
||||||
|
'
|
||||||
|
proc-instruction: xml-stylesheet -> type="text/xsl" href="url"
|
||||||
|
attribute: type -> text/xsl
|
||||||
|
attribute: href -> url'
|
||||||
|
|
||||||
test_output_equals \
|
test_output_equals \
|
||||||
'Parse exotic processing instructions.' \
|
'Parse exotic processing instructions.' \
|
||||||
'<?xml ?+>+?>-?>-<?js?>-<??>-' \
|
'<?xml ?+>+?>-?>-<?js?>-<??>-' \
|
||||||
|
Loading…
Reference in New Issue
Block a user