#!/usr/bin/perl use strict; my @create_target; for my $uri ( [null => 'null'], [absuri => '"http://test/"'], [xmluri => '"http://www.w3.org/XML/1998/namespace"'], [xmlnsuri => '"http://www.w3.org/2000/xmlns/"'], ) { for my $prefix ( [null => '"localName"', 'null', '"localName"'], [xml10ncname => '"originalPrefix:localName"', '"originalPrefix"', '"localName"'], [xml => '"xml:lang"', '"xml"', '"lang"'], [xmlns => '"xmlns"', 'null', '"xmlns"'], [xmlnsprefix => '"xmlns:declaredPrefix"', '"xmlns"', '"declaredPrefix"'], ) { push @create_target, ['Attr', $uri->[0], $prefix->[0], qq[ var el; try { el = document.createAttributeNS ($uri->[1], $prefix->[1]); } catch (e) { } if (!el) { try { el = document.createAttributeNS ($uri->[1], $prefix->[3]); el.prefix = $prefix->[2]; } catch (e) { } } var ok = (el && el.prefix == $prefix->[2] && el.namespaceURI == $uri->[1]); ]]; push @create_target, ['Element', $uri->[0], $prefix->[0], qq[ var el; try { el = document.createAttributeNS ($uri->[1], $prefix->[1]); } catch (e) { } if (!el) { try { el = document.createAttributeNS ($uri->[1], $prefix->[3]); el.prefix = $prefix->[2]; } catch (e) { } } var ok = (el && el.prefix == $prefix->[2] && el.namespaceURI == $uri->[1]); ]]; } } my @set_value = ( ['null', 'null'], ['undefined', 'undefined'], ['empty', '""'], ['nonxmlname', '"12345"'], ['xml10name', '"new:Prefix"'], ['xml10ncname', '"newPrefix"'], ['xml', '"xml"'], ['xmlns', '"xmlns"'], ); my $table = q[]; my @items; for my $create_target (@create_target) { $table .= qq[$create_target->[0] $create_target->[1] $create_target->[2]]; for my $set_value (@set_value) { my $file_name = lc ($create_target->[0]) . '-' . $create_target->[1] . '-' . $create_target->[2] . '-' . $set_value->[0]; warn $file_name, "\n"; $table .= qq[FAIL (not executed)]; push @items, $file_name; my $file_content = qq[ $create_target->[0].prefix = $set_value->[0]

FAIL (not executed)

]; open my $file, '>', "$file_name.html" or die "$0: $file_name.html: $!"; print $file "$file_content"; open $file, '>', "$file_name.xhtml" or die "$0: $file_name.xhtml: $!"; print $file qq'$file_content'; } $table .= q[]; } $table .= q[]; for my $type ( ['.html' => ''], ['.xhtml' => ''], ) { my $table = $table; $table =~ s/\.xhtml\b/$type->[0]/g; open my $file, '>', "set-prefix-list$type->[0]" or die "$0: set-prefix-list$type->[0]: $!"; print $file qq[$type->[1] prefix Attribute Test Result @{[ map { qq[] } @set_value ]} $table
Original$_->[0]
Node namespaceURI prefix

]; }