XML-Rules
view release on metacpan or search on metacpan
t/12-infer_from_DTD.t view on Meta::CPAN
<!ELEMENT DESC ( #PCDATA ) >
*END*
my $good = {
"#stripspaces" => 7,
"BASICVALIDATION,BASICVALIDATIONPARAM,DESC,EDITSTYLE,FIELDLENGTH,FIELDNOTES,FIELDTITLE,RETAINVALUE,"
. "RQBASICVALIDATION,RQSPECIFICVALIDATION,SECTION,SEQUENCENO,SITEFIELDREQUIRED,SPECIFICVALIDATION,"
. "SPECIFICVALIDATIONPARAM,STATIC,USERWILLSEE,VALUE" => "content",
"LOCALE" => "as array no content",
"InputFields,TRANSLATE" => "no content",
"FIELD,PULLDOWN" => 'no content by ID',
};
my $got = XML::Rules::inferRulesFromDTD( $DTD);
# pp($got);
is_deeply( $got, $good, "rules as expected");
}
{
my $DTD = <<'*END*';
<!ELEMENT Jobs (Job+)>
<!ELEMENT Job (Text,Foo?)>
<!ATTLIST Job ID CDATA #REQUIRED>
<!ELEMENT Text (#PCDATA)>
<!ELEMENT Foo (Bar)>
<!ELEMENT Bar (#PCDATA)>
<!ATTLIST Bar whatever CDATA #REQUIRED>
*END*
my $good = {
"#stripspaces" => 7,
Bar => "as is",
Job => "as array no content",
"Foo,Jobs" => "no content",
Text => "content",
};
my $got = XML::Rules::inferRulesFromDTD( $DTD);
# pp($got);
is_deeply( $got, $good, "rules as expected");
}
{
my $DTD = <<'*END*';
<!ELEMENT wddxPacket (header, data)>
<!ATTLIST wddxPacket version CDATA #FIXED "1.0">
<!ELEMENT header (#PCDATA)>
<!ELEMENT data (recordset+)>
<!ELEMENT recordset (field+)>
<!ATTLIST recordset rowCount CDATA #REQUIRED fieldNames CDATA "ad_name,industry_sector,category,company_name,jobposition,location_city,location_state,location_state2,location_state_region,location_country,location_country2,location_zip,work_frequency...
<!ELEMENT field (string)>
<!ATTLIST field name CDATA #REQUIRED>
<!--#info element=field repeat_set="name" repeat_list="ad_name,industry_sector,category,company_name,jobposition,location_city,location_state,location_state2,location_state_region,location_country,location_country2,location_zip,work_frequency,job_typ...
<!--#info element=field attribute=name foo=bar-->
<!ELEMENT string (#PCDATA)>
*END*
my $good = {
"#stripspaces" => 7,
"data,wddxPacket" => "no content",
"field,recordset" => "as array no content",
"header,string" => "content",
};
my $got = XML::Rules::inferRulesFromDTD( $DTD);
# pp($got);
is_deeply( $got, $good, "rules as expected");
}
{
my $DTD = <<'*END*';
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT JobPositionPosting (JobPositionPostingId*, HiringOrg+, PostDetail?, JobPositionInformation, HowToApply+, EEOStatement?, NumberToFill?, ProcurementInformation?)>
<!ATTLIST JobPositionPosting
status (active | inactive) #IMPLIED
>
<!ELEMENT SummaryText (#PCDATA | Link)*>
<!ELEMENT P (#PCDATA | Link | Qualification | Img)*>
<!ELEMENT UL (LI+)>
<!ELEMENT LI (#PCDATA | Link | Qualification)*>
<!ELEMENT Link (#PCDATA)>
<!ATTLIST Link
linkEnd CDATA #IMPLIED
mailTo CDATA #IMPLIED
idRef IDREF #IMPLIED
>
<!ELEMENT Img EMPTY>
<!ATTLIST Img
src CDATA #REQUIRED
width CDATA #IMPLIED
height CDATA #IMPLIED
alt CDATA #IMPLIED
mediaType CDATA #IMPLIED
>
<!ELEMENT JobPositionLocation (PostalAddress | LocationSummary | SummaryText)>
<!ELEMENT LocationSummary (Municipality?, Region*, CountryCode?, PostalCode?)>
<!ELEMENT Qualification (#PCDATA)>
<!ATTLIST Qualification
type (skill | experience | education | license | certification | equipment | other) #IMPLIED
description CDATA #IMPLIED
yearsOfExperience CDATA #IMPLIED
level (1 | 2 | 3 | 4 | 5) #IMPLIED
interest (1 | 2 | 3 | 4 | 5) #IMPLIED
yearLastUsed CDATA #IMPLIED
source CDATA #IMPLIED
category CDATA #IMPLIED
>
<!ELEMENT Date (#PCDATA)>
<!ELEMENT StartDate (Date)>
<!ELEMENT EndDate ((Date | CurrentFlag), SummaryText?)>
( run in 2.242 seconds using v1.01-cache-2.11-cpan-389fe586d7c )