File: 91noqual.t

package info (click to toggle)
libxml-compile-perl 1.64-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,304 kB
  • sloc: perl: 11,616; makefile: 7
file content (85 lines) | stat: -rw-r--r-- 1,988 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/env perl
# Test schemas unqualified schemas with target-namespace

use warnings;
use strict;

use lib 'lib','t';
use TestTools;

use XML::Compile::Schema;
use XML::Compile::Tester;

use Test::More tests => 27;

set_compile_defaults
    include_namespaces => 1
  , prefixes           => [ me => $TestNS ];

# targetNamespace and elementFormDefault just to add confusion.

my $s = <<__SCHEMA;
<xs:schema xmlns:xs="$SchemaNS"
  xmlns:me="$TestNS"
  targetNamespace="http://will-be-overruled"
  elementFormDefault="unqualified"
  attributeFormDefault="unqualified">

<xs:element name="test1" type="xs:int" />

<xs:complexType name="ct1">
  <xs:sequence>
    <xs:element name="c1_a" type="xs:int" />
  </xs:sequence>
  <xs:attribute name="a1_a" type="xs:int" />
</xs:complexType>

<xs:element name="test2" type="me:ct1" />

<xs:element name="test4">
  <xs:complexType>
    <xs:complexContent>
      <xs:extension base="me:ct1">
        <xs:sequence>
          <xs:element name="c4_a" type="xs:int" />
        </xs:sequence>
        <xs:attribute name="a4_a" type="xs:int" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

</xs:schema>
__SCHEMA

my $schema   = XML::Compile::Schema->new($s
 , target_namespace     => $TestNS
 , element_form_default => 'qualified'
 );
# $schema->printIndex;

ok(defined $schema, 'compiled schema');

is(join("\n", join "\n", $schema->types)."\n", "{$TestNS}ct1\n");

is(join("\n", join "\n", $schema->elements)."\n", <<__ELEMS__);
{$TestNS}test1
{$TestNS}test2
{$TestNS}test4
__ELEMS__

test_rw($schema, test1 => <<__XML, 10);
<me:test1 xmlns:me="$TestNS">10</me:test1>
__XML

test_rw($schema, test2 => <<__XML, {c1_a => 11});
<me:test2 xmlns:me="$TestNS"><me:c1_a>11</me:c1_a></me:test2>
__XML

my %t4 = (c1_a => 14, a1_a => 15, c4_a => 16, a4_a => 17);
test_rw($schema, test4 => <<__XML, \%t4);
<me:test4 xmlns:me="$TestNS" a1_a="15" a4_a="17">
   <me:c1_a>14</me:c1_a>
   <me:c4_a>16</me:c4_a>
</me:test4>
__XML