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 )