<!ELEMENT spanFile (
	spanVersion?,
	fileFormat?,
	created?,
	definitions,
	pointInTime+
	)>

<!ELEMENT spanVersion (#PCDATA)>
<!ELEMENT fileFormat (#PCDATA)>
<!ELEMENT created (#PCDATA)>

<!ELEMENT definitions (
	currencyDef*,
	acctTypeDef*,
	venueDef*,
	tickTypeDef*,
	feeTypeDef*,
	groupTypeDef*
	)>

<!ELEMENT currencyDef (
	currency,
	symbol,
	name,
	decimalPos
	)>

<!ELEMENT currency (#PCDATA)>
<!ELEMENT symbol (#PCDATA)>
<!ELEMENT decimalPos (#PCDATA)>
<!ELEMENT name (#PCDATA)>

<!ELEMENT acctTypeDef (
	isCust,
	acctType,
	name?,
	isNetMargin,
	priority
	)>

<!ELEMENT acctType (#PCDATA)>
<!ELEMENT isCust (#PCDATA)>
<!ELEMENT isNetMargin (#PCDATA)>
<!ELEMENT priority (#PCDATA)>

<!ELEMENT venueDef (
	id,
	name
	)>

<!ELEMENT tickTypeDef (
	id,
	name
	)>

<!ELEMENT feeTypeDef (
	id,
	name
	)>

<!ELEMENT groupTypeDef (
	id,
	name
	)>

<!ELEMENT id (#PCDATA)>

<!ELEMENT pointInTime (
	date,
	isSetl?,
	setlQualifier?,
	time?,
	run?,
	desc?,
	clearingOrg+,
	businessFunction*,
	portfolio*
	)>

<!ELEMENT date (#PCDATA)>
<!ELEMENT isSetl (#PCDATA)>
<!ELEMENT setlQualifier (#PCDATA)>
<!ELEMENT time (#PCDATA)>
<!ELEMENT run (#PCDATA)>

<!ELEMENT clearingOrg (
	ec,
	name,
	isContractScale?,
	isNetMargin?,
	finalizeMeth?,
	oopDeltaMeth?,
	capAnov?,
	lookAheadYears?,
	lookAheadDays?,
	daysPerYear?,
	curConv*,
	pbRateDef*,
	pointDef*,
	exchange+,
	ccDef*,
	superSpreads?,
	interSpreads?,
	interClearSpreads?
	)>

<!ELEMENT ec (#PCDATA)>
<!ELEMENT isContractScale (#PCDATA)>
<!ELEMENT finalizeMeth (#PCDATA)>
<!ELEMENT oopDeltaMeth (#PCDATA)>
<!ELEMENT capAnov (#PCDATA)>
<!ELEMENT lookAheadYears (#PCDATA)>
<!ELEMENT lookAheadDays (#PCDATA)>
<!ELEMENT daysPerYear (#PCDATA)>

<!ELEMENT curConv (
	fromCur,
	toCur,
	factor
	)>

<!ELEMENT fromCur (#PCDATA)>
<!ELEMENT toCur (#PCDATA)>
<!ELEMENT factor (#PCDATA)>

<!ELEMENT pbRateDef (
	r,
	isCust,
	acctType,
	isM, 
	pbc
	)>

<!ELEMENT r (#PCDATA)>
<!ELEMENT isM (#PCDATA)>
<!ELEMENT pbc (#PCDATA)>

<!ELEMENT pointDef (
	r,
	scanPointDef+,
	deltaPointDef*
	)>

<!ELEMENT scanPointDef (
	point,
	priceScanDef,
	volScanDef,
	weight, 
	pairedPoint
	)>

<!ELEMENT deltaPointDef (
	point,
	priceScanDef,
	volScanDef,
	weight
	)>

<!ELEMENT priceScanDef (
	mult,
	numerator?,
	denominator?
	)>

<!ELEMENT volScanDef (
	mult,
	numerator?,
	denominator?
	)>

<!ELEMENT point (#PCDATA)>
<!ELEMENT weight (#PCDATA)>
<!ELEMENT mult (#PCDATA)>
<!ELEMENT numerator (#PCDATA)>
<!ELEMENT denominator (#PCDATA)>
<!ELEMENT pairedPoint (#PCDATA)>

<!ELEMENT exchange (
	exch,
	name?,
	phyPf*,
	debtPf*,
	equityPf*,
	futPf*,
	eDebtPf*, 
	oopPf*,
	oofPf*,
	ooePf*,
	(cmbPf|oocPf)*
	)>

<!ELEMENT exch (#PCDATA)>

<!ELEMENT phyPf (
	pfId,
	pfCode,
	domain?,
	specs?,
	group*,
	alias*,
	name?,
	currency,
	contractSize?,
	uomQty?,
	uom?,
	cvf?,
	priceDl?,
	priceFmt?,
	valueMeth,
	priceMeth?,
	setlMeth?,
	phy*
	)>

<!ELEMENT pfId (#PCDATA)>
<!ELEMENT pfCode (#PCDATA)>
<!ELEMENT domain (#PCDATA)>
<!ELEMENT contractSize (#PCDATA)>
<!ELEMENT uomQty (#PCDATA)>
<!ELEMENT uom (#PCDATA)>
<!ELEMENT cvf (#PCDATA)>
<!ELEMENT priceDl (#PCDATA)>
<!ELEMENT priceFmt (#PCDATA)>
<!ELEMENT valueMeth (#PCDATA)>
<!ELEMENT priceMeth (#PCDATA)>
<!ELEMENT setlMeth (#PCDATA)>

<!ELEMENT specs (
	listed?,
	aliasDesc?,
	unitDesc?,
	quoted?,
	priceDesc?,
	pointDesc?,
	cabDesc?,
	listDesc?,
	flexDesc?,
	strikeDesc?,
	posLimit?,
	setlDateRule?,
	fdotRule?,
	ldotRule?,
	finalPriceRule?,
	venue*,
	fee*
	)>

<!ELEMENT listed (#PCDATA)>
<!ELEMENT aliasDesc (#PCDATA)>
<!ELEMENT unitDesc (#PCDATA)>
<!ELEMENT quoted (#PCDATA)>
<!ELEMENT priceDesc (#PCDATA)>
<!ELEMENT pointDesc (#PCDATA)>
<!ELEMENT cabDesc (#PCDATA)>
<!ELEMENT listDesc (#PCDATA)>
<!ELEMENT flexDesc (#PCDATA)>
<!ELEMENT strikeDesc (#PCDATA)>
<!ELEMENT posLimit (#PCDATA)>
<!ELEMENT setlDateRule (#PCDATA)>
<!ELEMENT fdotRule (#PCDATA)>
<!ELEMENT ldotRule (#PCDATA)>
<!ELEMENT finalPriceRule (#PCDATA)>

<!ELEMENT venue (
	id,
	hours?,
	listDesc?,
	flexDesc?,
	strikeDesc?,
	tick*,
	limits?,
	limitsDesc?,
	fdotRule?,
	ldotRule?
	)>

<!ELEMENT hours (#PCDATA)>
<!ELEMENT limits (#PCDATA)>
<!ELEMENT limitsDesc (#PCDATA)>

<!ELEMENT tick (
	id,
	val,
	loVal?,
	hiVal?,
	desc?
	)>

<!ELEMENT loVal (#PCDATA)>
<!ELEMENT hiVal (#PCDATA)>

<!ELEMENT fee (
	id,
	val,
	desc?
	)>

<!ELEMENT group (
	id,
	aVal
	)>

<!ELEMENT alias (
	aType,
	aVal
	)>

<!ELEMENT aType (#PCDATA)>
<!ELEMENT aVal (#PCDATA)>

<!ELEMENT debtPf (
	pfId,
	pfCode,
	domain?,
	specs?,
	group*,
	alias*,
	name?,
	currency,
	contractSize?,
	uomQty?,
	uom?,
	cvf,
	priceDl?,
	priceFmt?,
	valueMeth,
	priceMeth?,
	setlMeth?,
	country,
	debt*
	)>

<!ELEMENT country (#PCDATA)>

<!ELEMENT equityPf (
	pfId,
	pfCode,
	domain?,
	specs?,
	group*,
	alias*,
	name?,
	currency,
	contractSize?,
	uomQty?,
	uom?,
	cvf,
	priceDl?,
	priceFmt?,
	valueMeth,
	priceMeth?,
	setlMeth?,
	country,
	equity*
	)>

<!ELEMENT futPf (
	pfId,
	pfCode,
	domain?,
	specs?,
	group*,
	alias*,
	name?,
	currency,
	contractSize?,
	uomQty?,
	uom?,
	cvf,
	priceDl?,
	priceFmt?,
	valueMeth,
	priceMeth?,
	setlMeth?,
	undPf?,
	fut*
	)>
<!ATTLIST futPf
	rptOrder	CDATA		#IMPLIED
	pageBreak	CDATA		#IMPLIED
	>

<!ELEMENT undPf (
	exch,
	pfId,
	pfCode?,
	pfType?,
	s,
	i
	)>

<!ELEMENT s (#PCDATA)>
<!ELEMENT i (#PCDATA)>

<!ELEMENT eDebtPf (
	pfId,
	pfCode,
	domain?,
	specs?,
	group*,
	alias*,
	name?,
	currency,
	contractSize?,
	uomQty?,
	uom?,
	cvf,
	priceDl?,
	priceFmt?,
	valueMeth,
	priceMeth?,
	setlMeth?,
	country,
	undPf?,
	eDebt*
	)>

<!ELEMENT oopPf (
	pfId,
	pfCode,
	domain?,
	specs?,
	group*,
	alias*,
	name?,
	exercise?,
	currency,
	contractSize?,
	uomQty?,
	uom?,
	cvf,
	priceDl?,
	priceFmt?,
	strikeDl?,
	strikeFmt?,
	cab?,
	valueMeth,
	priceMeth?,
	setlMeth?,
	priceModel,
	undPf?,
	series*
	)>
<!ATTLIST oopPf
	rptOrder	CDATA		#IMPLIED
	pageBreak	CDATA		#IMPLIED
	>

<!ELEMENT exercise (#PCDATA)>
<!ELEMENT strikeDl (#PCDATA)>
<!ELEMENT strikeFmt (#PCDATA)>
<!ELEMENT cab (#PCDATA)>
<!ELEMENT priceModel (#PCDATA)>

<!ELEMENT oofPf (
	pfId,
	pfCode,
	domain?,
	specs?,
	group*,
	alias*,
	name?,
	exercise?,
	currency,
	contractSize?,
	uomQty?,
	uom?,
	cvf,
	priceDl?,
	priceFmt?,
	strikeDl?,
	strikeFmt?,
	cab?,
	valueMeth,
	priceMeth?,
	setlMeth?,
	priceModel?,
	undPf?,
	series*
	)>
<!ATTLIST oofPf
	rptOrder	CDATA		#IMPLIED
	pageBreak	CDATA		#IMPLIED
	>

<!ELEMENT ooePf (
	pfId,
	pfCode,
	domain?,
	specs?,
	group*,
	alias*,
	name?,
	exercise?,
	currency,
	contractSize?,
	uomQty?,
	uom?,
	cvf,
	priceDl?,
	priceFmt?,
	strikeDl?,
	strikeFmt?,
	cab?,
	valueMeth,
	priceMeth?,
	setlMeth?,
	oopDeltaMeth?,
	priceModel,
	undPf?,
	series*
	)>

<!ELEMENT cmbPf (
	pfId,
	pfCode,
	domain?,
	specs?,
	group*,
	alias*,
	name?,
	currency,
	contractSize?,
	uomQty?,
	uom?,
	cvf,
	priceDl?,
	priceFmt?,
	valueMeth,
	priceMeth?,
	setlMeth?,
	cmbType?,
	undPf*,
	cmb*
	)>

<!ELEMENT oocPf (
	pfId,
	pfCode,
	domain?,
	specs?,
	group*,
	alias*,
	name?,
	exercise?,
	currency,
	contractSize?,
	uomQty?,
	uom?,
	cvf,
	priceDl?,
	priceFmt?,
	strikeDl?,
	strikeFmt?,
	cab?,
	valueMeth,
	priceMeth?,
	setlMeth?,
	oopDeltaMeth?,
	priceModel,
	undPf?,
	series*
	)>

<!ELEMENT series (
	pe,
	alias*,
	v?,
	volSrc?,
	setlDate?,
	t?,
	fdot?,
	ldot?,
	seriesSetlMeth?,
	cvf?,
	sc,
	undC,
	intrRate*,
	divRate?,
	venue*,
	scanRate*,
	opt*
	)>

<!ELEMENT pe (#PCDATA)>
<!ELEMENT v (#PCDATA)>
<!ELEMENT volSrc (#PCDATA)>
<!ELEMENT seriesSetlMeth (#PCDATA)>
<!ELEMENT setlDate (#PCDATA)>
<!ELEMENT t (#PCDATA)>
<!ELEMENT fdot (#PCDATA)>
<!ELEMENT ldot (#PCDATA)>
<!ELEMENT sc (#PCDATA)>
<!ELEMENT cmbType (#PCDATA)>

<!ELEMENT intrRate (
	val,
	rl?,
	cpm?,
	tm?,
	exm?
	)>

<!ELEMENT divRate (
	val,
	div*
	)>

<!ELEMENT div (
	val,
	((dtm|setlDate)|(dtm,setlDate))
	)>
	
<!ELEMENT rl (#PCDATA)>
<!ELEMENT cpm (#PCDATA)>
<!ELEMENT tm (#PCDATA)>
<!ELEMENT exm (#PCDATA)>
<!ELEMENT dtm (#PCDATA)>

<!ELEMENT undC (
	exch,
	pfId,
	cId,
	s,
	i
	)>

<!ELEMENT cId (#PCDATA)>

<!ELEMENT phy (
	cId,
	alias*,
	pe?,
	p?,
	d?,
	v?,
	cvf?,
	sc?,
	venue*,
	scanRate*,
	ra*
	)>

<!ELEMENT p (#PCDATA)>
<!ELEMENT d (#PCDATA)>

<!ELEMENT debt (
	cId,
	alias*,
	((cusip|isin)|(cusip,isin)),
	pe?,
	p?,
	d?,
	v?,
	cvf?,
	sc?,
	desc?,
	type?,
	subType?,
	setlDate?,
	cpnRate?,
	cpnFreq?,
	cpnNextDate?,
	cpnLastDate?,
	accruedIntr,
	duration?,
	lbe?,
	venue*,
	scanRate*,
	ra*
	)>

<!ELEMENT cusip (#PCDATA)>
<!ELEMENT isin (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT type (#PCDATA)>
<!ELEMENT subType (#PCDATA)>
<!ELEMENT cpnRate (#PCDATA)>
<!ELEMENT cpnFreq (#PCDATA)>
<!ELEMENT cpnNextDate (#PCDATA)>
<!ELEMENT cpnLastDate (#PCDATA)>
<!ELEMENT accruedIntr (#PCDATA)>
<!ELEMENT duration (#PCDATA)>
<!ELEMENT lbe (#PCDATA)>

<!ELEMENT equity (
	cId,
	alias*,
	((cusip|isin)|(cusip,isin)),
	pe?,
	p?,
	d?,
	v?,
	cvf?,
	sc?,
	desc?,
	type?,
	subType?,
	divRate?,
	venue*,
	scanRate*,
	ra*
	)>

<!ELEMENT fut (
	cId,
	alias*,
	pe,
	p,
	d?,
	v?,
	cvf?,
	sc?,
	setlDate?,
	t?,
	fdot?,
	ldot?,
	fDeliv?,
	lDeliv?,
	undC,
	intrRate*,
	venue*,
	scanRate*,
	ra*
	)>

<!ELEMENT fDeliv (#PCDATA)>
<!ELEMENT lDeliv (#PCDATA)>

<!ELEMENT eDebt	(
	cId,
	alias*,
	((cusip|isin)|(cusip,isin)),
	pe?,
	p?,
	d?,
	v?,
	cvf?,
	sc?,
	desc?,
	type?,
	subType?,
	setlDate?,
	cpnRate?,
	cpnFreq?,
	cpnNextDate?,
	cpnLastDate?,
	accruedIntr,
	duration?,
	lbe?,
	futEqFactor,
	undC+,
	venue*
	)>

<!ELEMENT futEqFactor (#PCDATA)>

<!ELEMENT opt (
	cId,
	alias*,
	o,
	k,
	p,
	d?,
	v?,
	ra*
	)>

<!ELEMENT o (#PCDATA)>
<!ELEMENT k (#PCDATA)>

<!ELEMENT cmb (
	cId,
	alias*,
	pe?,
	p?,
	d?,
	v?,
	cvf?,
	sc?,
	setlDate?,
	t?,
	fdot?,
	ldot?,
	undC+,
	venue*,
	scanRate*,
	ra*
	)>

<!ELEMENT ra (
	r,
	a+,
	d
	)>

<!ELEMENT a (#PCDATA)>

<!ELEMENT ccDef (
	cc,
	name?,
	group*,
	currency,
	riskExponent?,
	contractSize?,
	uomQty?,
	uom?,
	capAnov?,
	procMeth?,
	wfprMeth?,
	spotMeth?,
	somMeth?,
	cmbMeth?,
	pointDef*,
	pfLink*,
	adjRate*,
	(scanTiers|intraTiers|interTiers|rateTiers|somTiers)*,
	dSpread*,
	spotRate*,
	liqRate*,
	basisRates?
	)>

<!ELEMENT cc (#PCDATA)>
<!ELEMENT riskExponent (#PCDATA)>
<!ELEMENT procMeth (#PCDATA)>
<!ELEMENT wfprMeth (#PCDATA)>
<!ELEMENT spotMeth (#PCDATA)>
<!ELEMENT somMeth (#PCDATA)>
<!ELEMENT cmbMeth (#PCDATA)>

<!ELEMENT pfLink (
	exch,
	pfId,
	pfCode?,
	pfType?,
	sc,
	cmbMeth?,
	applyBasisRisk?,
	oopDeltaMeth?
	)>

<!ELEMENT pfType (#PCDATA)>
<!ELEMENT applyBasisRisk (#PCDATA)>

<!ELEMENT adjRate (
	r,
	baseR,
	val
	)>

<!ELEMENT baseR (#PCDATA)>
<!ELEMENT val (#PCDATA)>

<!ELEMENT scanTiers (tier)+>
<!ELEMENT intraTiers (tier)+>
<!ELEMENT interTiers (tier)+>
<!ELEMENT rateTiers (tier)+>
<!ELEMENT somTiers (tier)+>

<!ELEMENT tier (
	tn,
	sPe?,
	ePe?,
	tne?,
	tbn?,
	btn?,
	brk?,
	((rate*)|(scanRate*))
	)>

<!ELEMENT tn (#PCDATA)>
<!ELEMENT sPe (#PCDATA)>
<!ELEMENT ePe (#PCDATA)>
<!ELEMENT tne (#PCDATA)>
<!ELEMENT tbn (#PCDATA)>
<!ELEMENT btn (#PCDATA)>
<!ELEMENT brk (#PCDATA)>

<!ELEMENT rate (
	r,
	val
	)>

<!ELEMENT scanRate (
	r,
	((priceScan|priceScanPct)|(priceScan,priceScanPct)),
	((volScan|volScanPct)|(volScan,volScanPct))
	)>

<!ELEMENT priceScan (#PCDATA)>
<!ELEMENT priceScanPct (#PCDATA)>
<!ELEMENT volScan (#PCDATA)>
<!ELEMENT volScanPct (#PCDATA)>

<!ELEMENT dSpread (
	spread,
	chargeMeth,
	(rate*|pmpsRate*),
	((tLeg|pLeg)*|(rpLeg)*),
	dSpread*
	)>

<!ELEMENT spread (#PCDATA)>
<!ELEMENT chargeMeth (#PCDATA)>

<!ELEMENT pmpsRate (
	r,
	val,
	pmRate,
	psRate
	)>

<!ELEMENT pmRate (#PCDATA)>
<!ELEMENT psRate (#PCDATA)>

<!ELEMENT tLeg (
	cc,
	tn,
	rs,
	i
	)>

<!ELEMENT rs (#PCDATA)>

<!ELEMENT pLeg (
	cc,
	pe,
	rs,
	i
	)>

<!ELEMENT rpLeg (
	cc,
	rpNum,
	rs,
	i,
	btNum?,
	etNum?
	)>

<!ELEMENT rpNum (#PCDATA)>
<!ELEMENT btNum (#PCDATA)>
<!ELEMENT etNum (#PCDATA)>

<!ELEMENT spotRate (
	r,
	pe,
	sprd,
	outr
	)>

<!ELEMENT sprd (#PCDATA)>
<!ELEMENT outr (#PCDATA)>

<!ELEMENT liqRate (
	r,
	specificRate,
	genericRate
	)>

<!ELEMENT specificRate (#PCDATA)>
<!ELEMENT genericRate (#PCDATA)>

<!ELEMENT basisRates (rate*)>

<!ELEMENT superSpreads (dSpread*)>

<!ELEMENT interSpreads (dSpread|sSpread)*>

<!ELEMENT interClearSpreads (clearSpread*)>

<!ELEMENT sSpread (
	spread,
	isTargetReq?,
	rate+,				   
	sLeg+
	)>

<!ELEMENT isTargetReq (#PCDATA)>

<!ELEMENT sLeg (
	cc,
	isTarget
	)>

<!ELEMENT isTarget (#PCDATA)>

<!ELEMENT clearSpread (
	spread,
	homeLeg+,
	awayLeg+
	)>

<!ELEMENT homeLeg (
	cc,
	tn,
	rs,
	i,
	rate+
	)>

<!ELEMENT awayLeg (
	ec,
	cc,
	tn,
	rs,
	i
	)>

<!ELEMENT businessFunction (
	busFuncType,
	ec,
	name,
	isContractScale?,
	isNetMargin?,
	finalizeMeth,
	oopDeltaMeth?,
	capAnov?,
	lookAheadYears?,
	lookAheadDays?,
	daysPerYear?,
	curConv*,
	pbRateDef*,
	pointDef+,
	busFuncCoLink+,
	ccDef+,
	superSpreads?,
	interSpreads?,
	interClearSpreads?
	)>

<!ELEMENT busFuncType (#PCDATA)>

<!ELEMENT busFuncCoLink (
	ec,
	coAlias?,
	busFuncExchLink+
	)>

<!ELEMENT busFuncExchLink (
	exch,
	exchAlias?,
	bfPfLink+
	)>

<!ELEMENT bfPfLink (
	pfId,
	pfCode?,
	pfType?,
	pfAlias?,
	(bfSeries*|bfC*)
	)>

<!ELEMENT coAlias (#PCDATA)>
<!ELEMENT exchAlias (#PCDATA)>
<!ELEMENT pfAlias (#PCDATA)>

<!ELEMENT bfSeries (
	pe,
	undC,
	scanRate*,
	bfC*
	)>

<!ELEMENT bfC (
	cId,
	scanRate*,
	ra*
	)>


<!-- Portfolio Side Elements -->
<!-- *********************** -->

<!ELEMENT portfolio (
	firm,
	acctId,
	acctType,
	isCust,
	seg?,
	parentAcct?,
	isNew,
	equivPosType?,
	currency,
	ledgerBal,
	ote,
	securities,
	lfv?,
	sfv?,
	lov?,
	sov?,
	curVal*,
	oReq*,
	ecPort+
	)>

<!ELEMENT firm (#PCDATA)>
<!ELEMENT acctId (#PCDATA)>
<!ELEMENT seg (#PCDATA)>
<!ELEMENT isNew (#PCDATA)>
<!ELEMENT ledgerBal (#PCDATA)>
<!ELEMENT ote (#PCDATA)>
<!ELEMENT securities (#PCDATA)>
<!ELEMENT lfv (#PCDATA)>
<!ELEMENT sfv (#PCDATA)>
<!ELEMENT lov (#PCDATA)>
<!ELEMENT sov (#PCDATA)>
<!ELEMENT equivPosType (#PCDATA)>

<!ELEMENT parentAcct (
	firm,
	acctId,
	seg?
	)>

<!ELEMENT curVal (
	currency,
	lfv,
	sfv,
	lov,
	sov
	)>

<!ELEMENT oReq (
	isM,
	pbc,
	spanReq,
	addlReq?,
	anov,
	oReq?,
	curReq*
	)>
	
<!ELEMENT spanReq (#PCDATA)>
<!ELEMENT addlReq (#PCDATA)>
<!ELEMENT anov (#PCDATA)>

<!ELEMENT curReq (
	currency,
	spanReq,
	addlReq?,
	anov,
	curReq?
	)>

<!ELEMENT ecPort (
	ec,
	lfv?,
	sfv?,
	lov?,
	sov?,
	curVal*,
	oReq*,
	ccPort+
	)>

<!ELEMENT ccPort (
	cc,
	r?,
	currency?,
	pss,
	lfv?,
	sfv?,
	lov?,
	sov?,
	(nReq|gReq|dReq)*,
	(np|ncp|gp|gcp|edp)*
	)>

<!ELEMENT pss (#PCDATA)>

<!ELEMENT nReq (
	isM,
	pbc,
	spanReq,
	addlReq?,
	anov?,
	sr,
	ia,
	basis?,
	dr,
	ie,
	iex,
	som,
	pd+,
	str+,
	iatr+,
	ietr+,
	somtr+	
	)>
	
<!ELEMENT ia (#PCDATA)>
<!ELEMENT basis (#PCDATA)>
<!ELEMENT dr (#PCDATA)>
<!ELEMENT ie (#PCDATA)>
<!ELEMENT iex (#PCDATA)>
<!ELEMENT som (#PCDATA)>

<!ELEMENT pd (
	pe,
	od,
	gd,
	rd,
	drs?,
	dro?
	)>

<!ELEMENT od (#PCDATA)>
<!ELEMENT gd (#PCDATA)>
<!ELEMENT rd (#PCDATA)>
<!ELEMENT drs (#PCDATA)>
<!ELEMENT dro (#PCDATA)>

<!ELEMENT str (
	tn,
	sr,
	as,
	sv+
	)>
	
<!ELEMENT sr (#PCDATA)>
<!ELEMENT as (#PCDATA)>
<!ELEMENT sv (#PCDATA)>

<!ELEMENT iatr (
	tn,
	ld,
	sd,
	rld,
	rsd
	)>
	
<!ELEMENT ld (#PCDATA)>
<!ELEMENT sd (#PCDATA)>
<!ELEMENT rld (#PCDATA)>
<!ELEMENT rsd (#PCDATA)>

<!ELEMENT ietr (
	tn,
	ie,
	iex,
	wpr,
	pr,
	tr,
	vr,
	sr,
	as,
	ld,
	sd,
	rld,
	rsd,
	sv+
	)>
	
<!ELEMENT wpr (#PCDATA)>
<!ELEMENT pr (#PCDATA)>
<!ELEMENT tr (#PCDATA)>
<!ELEMENT vr (#PCDATA)>

<!ELEMENT somtr (
	tn,
	som,
	sco,
	spo
	)>

<!ELEMENT sco (#PCDATA)>
<!ELEMENT spo (#PCDATA)>

<!ELEMENT gReq (
	isM,
	pbc,
	spanReq,
	addlReq?,
	anov,
	som,
	nlRisk,
	nsRisk,
	asomtr*,
	(iaReq|nReq)*,
	(nlr|nsr)*
	)>

<!ELEMENT nlRisk (#PCDATA)>
<!ELEMENT nsRisk (#PCDATA)>

<!ELEMENT asomtr (
	tn,
	som,
	sco,
	spo,
	sno
	)>

<!ELEMENT sno (#PCDATA)>

<!ELEMENT iaReq (
	isM,
	pbc,
	spanReq,
	sr,
	ia,	
	dr,
	som,
	pd+,
	str+,
	iatr+,
	somtr+
	)>

<!ELEMENT nlr (
	isM,
	pbc,
	spanReq,
	dr,
	pd+,
	str+
	)>

<!ELEMENT nsr (
	isM,
	pbc,
	spanReq,
	dr,
	som,
	pd+,
	str+,
	somtr+
	)>

<!ELEMENT dReq (
	isM,
	pbc,
	spanReq,
	addlReq?,
	anov
	)>

<!ELEMENT np (
	exch,
	pfId,
	cId,
	net,
	equiv?,
	split?
	)>

<!ELEMENT ncp (
	exch,
	pfId,
	cId,
	net,
	long,
	short,
	equiv?,
	split?
	)>

<!ELEMENT net (#PCDATA)>
<!ELEMENT long (#PCDATA)>
<!ELEMENT short (#PCDATA)>
<!ELEMENT equiv (#PCDATA)>
<!ELEMENT split (#PCDATA)>

<!ELEMENT gp (
	exch,
	pfId,
	cId,
	long,
	short,
	nl?,
	ns?,
	nlEquiv?,
	nsEquiv?,
	nlSplit?,
	nsSplit?
	)>

<!ELEMENT nl (#PCDATA)>
<!ELEMENT ns (#PCDATA)>
<!ELEMENT nlEquiv (#PCDATA)>
<!ELEMENT nsEquiv (#PCDATA)>
<!ELEMENT nlSplit (#PCDATA)>
<!ELEMENT nsSplit (#PCDATA)>

<!ELEMENT gcp (
	exch,
	pfId,
	cId,
	long,
	short,
	iaLong?,
	iaShort?,
	ialEquiv?,
	iasEquiv?,
	ialSplit?,
	iasSplit?,
	ieLong?,
	ieShort?,
	ielEquiv?,
	iesEquiv?,
	ielSplit?,
	iesSplit?,
	nl?,
	ns?,
	nlEquiv?,
	nsEquiv?,
	nlSplit?,
	nsSplit?
	)>

<!ELEMENT iaLong (#PCDATA)>
<!ELEMENT iaShort (#PCDATA)>
<!ELEMENT ialEquiv (#PCDATA)>
<!ELEMENT iasEquiv (#PCDATA)>
<!ELEMENT ialSplit (#PCDATA)>
<!ELEMENT iasSplit (#PCDATA)>
<!ELEMENT ieLong (#PCDATA)>
<!ELEMENT ieShort (#PCDATA)>
<!ELEMENT ielEquiv (#PCDATA)>
<!ELEMENT iesEquiv (#PCDATA)>
<!ELEMENT ielSplit (#PCDATA)>
<!ELEMENT iesSplit (#PCDATA)>

<!ELEMENT edp (
	exch,
	pfId,
	cId,
	no,
	nrps,
	nrpn
	)>

<!ELEMENT no (#PCDATA)>
<!ELEMENT nrps (#PCDATA)>
<!ELEMENT nrpn (#PCDATA)>

