<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % lUnit "lengthUnit (mm|cm|m|in|ft|yd) #REQUIRED">
<!ENTITY % wUnit "weightUnit (g|kg|oz|lb) #REQUIRED">
<!ENTITY % cUnit "countUnit (tex|Nm|NeC|NeW|Np|Ny|NeL|NeS|Td|Run|dtex) #REQUIRED">
<!ENTITY % wlUnit "weightPerLengthUnit (gPERm|ozPERyd) #REQUIRED">
<!ENTITY % wl2Unit "weightPerSquareLengthUnit (gPERm2|ozPERyd2) #REQUIRED">
	<!ELEMENT ArahneFabric (Header, Warp, Weft, Dobby?, Jacquard?, Price?)>

	<!ELEMENT Header (CreationDate, Filename, Division, Name, Code, Design, Version, Saison, Customer, Status, InStock, DerivedFrom, Cut, NumFabrics, Type, TypeBits, Designer, Notes, Day, Month, Year, Operator, ReedWidth,
	ReedWidthWithSelvedge, RawWidth, FinishedWidth, ReedNumber, WarpLength, Warp2Length, FabricLengthRaw, FabricLengthFinished,
	SelvedgeDenting, TotalWarpThreads, TotalWarpThreadsWithSelvedge, TotalDents, TotalDentsWithSelvedge, Take-up, Take-up2, WasteWarp,
	WasteWeft, WeavingShrinkage, FinishingShrinkage, FinishingWeightChange, FilCoupe, FinishingBits, Finishing, Denting, DentingCode, Regulator, DentingRepeatThreads, DentingRepeatDents, RegulatorRepeatThreads,
	RegulatorRepeatAdvances, RepeatSizeX, RepeatSizeY, CommercialRepeatX?, CommercialRepeatY?, WeaveName, WeaveNotes, WeaveRepeatX, WeaveRepeatY, SelvedgeWeaveName,
	WarpDensity, WeftDensity*, WeftDensityRaw, WeftDensityFinished, Consumption, ConsumptionWarpWithSelvedges,
	ConsumptionWarpNoSelvedges, ConsumptionWeft, RawWeightPerLength, RawWeightPerSquareLength, FinishedWeightPerLength, FinishedWeightPerSquareLength,
	WarpFibre?, FabricFibre?, FabricFibreFilCoupe?)>

	<!ELEMENT CreationDate (#PCDATA)>
	<!ELEMENT Filename (#PCDATA)>
	<!ELEMENT Division (#PCDATA)>
	<!ELEMENT Name (#PCDATA)>
	<!ELEMENT Code (#PCDATA)>
	<!ELEMENT Design (#PCDATA)>
	<!ELEMENT Version (#PCDATA)>
	<!ELEMENT Saison (#PCDATA)>
	<!ELEMENT Customer (#PCDATA)>
	<!ELEMENT Status (#PCDATA)>
	<!ELEMENT InStock (#PCDATA)>
	<!ELEMENT DerivedFrom (#PCDATA)>
	<!ELEMENT Cut (#PCDATA)>
	<!ELEMENT NumFabrics (#PCDATA)>
	<!ELEMENT Type (#PCDATA)>
	<!ELEMENT TypeBits (#PCDATA)>
	<!ELEMENT Designer (#PCDATA)>
	<!ELEMENT Notes (#PCDATA)>
	<!ELEMENT Day (#PCDATA)>
	<!ELEMENT Month (#PCDATA)>
	<!ELEMENT Year (#PCDATA)>
	<!ELEMENT Operator (#PCDATA)>
	<!ELEMENT ReedWidth (#PCDATA)>
	<!ATTLIST ReedWidth %lUnit; >
	<!ELEMENT ReedWidthWithSelvedge (#PCDATA)>
	<!ATTLIST ReedWidthWithSelvedge %lUnit; >
	<!ELEMENT RawWidth (#PCDATA)>
	<!ATTLIST RawWidth %lUnit; >
	<!ELEMENT FinishedWidth (#PCDATA)>
	<!ATTLIST FinishedWidth %lUnit; >

	<!ELEMENT ReedNumber (#PCDATA)>
	<!ATTLIST ReedNumber %lUnit; >
	<!ELEMENT WarpLength (#PCDATA)>
	<!ATTLIST WarpLength %lUnit; >
	<!ELEMENT Warp2Length (#PCDATA)>
	<!ATTLIST Warp2Length %lUnit; >
	<!ELEMENT FabricLengthRaw (#PCDATA)>
	<!ATTLIST FabricLengthRaw %lUnit; >
	<!ELEMENT FabricLengthFinished (#PCDATA)>
	<!ATTLIST FabricLengthFinished %lUnit; >
	<!ELEMENT SelvedgeDenting (#PCDATA)>
	<!ELEMENT TotalWarpThreads (#PCDATA)>
	<!ELEMENT TotalWarpThreadsWithSelvedge (#PCDATA)>
	<!ELEMENT TotalDents (#PCDATA)>
	<!ELEMENT TotalDentsWithSelvedge (#PCDATA)>

	<!ELEMENT Take-up (#PCDATA)>
	<!ELEMENT Take-up2 (#PCDATA)>
	<!ELEMENT WasteWarp (#PCDATA)>
	<!ELEMENT WasteWeft (#PCDATA)>
	<!ELEMENT WeavingShrinkage (#PCDATA)>
	<!ELEMENT FinishingShrinkage (#PCDATA)>
	<!ELEMENT FinishingWeightChange (#PCDATA)>
	<!ELEMENT FilCoupe (#PCDATA)>
	<!ELEMENT Finishing (#PCDATA)>
	<!ELEMENT FinishingBits (#PCDATA)>
	<!ELEMENT Denting (#PCDATA)>
	<!ELEMENT DentingCode (#PCDATA)>
	<!ELEMENT Regulator (#PCDATA)>
	<!ELEMENT DentingRepeatThreads (#PCDATA)>
	<!ELEMENT DentingRepeatDents (#PCDATA)>
	<!ELEMENT RegulatorRepeatThreads (#PCDATA)>
	<!ELEMENT RegulatorRepeatAdvances (#PCDATA)>

	<!ELEMENT RepeatSizeX (#PCDATA)>
	<!ATTLIST RepeatSizeX %lUnit; >
	<!ELEMENT RepeatSizeY (#PCDATA)>
	<!ATTLIST RepeatSizeY %lUnit; >
	<!ELEMENT CommercialRepeatX (#PCDATA)>
	<!ELEMENT CommercialRepeatY (#PCDATA)>

	<!ELEMENT WeaveName (#PCDATA)>
	<!ELEMENT WeaveNotes (#PCDATA)>
	<!ELEMENT WeaveRepeatX (#PCDATA)>
	<!ELEMENT WeaveRepeatY (#PCDATA)>
	<!ELEMENT SelvedgeWeaveName (#PCDATA)>
	<!ELEMENT WarpDensity (#PCDATA)>
	<!ATTLIST WarpDensity %lUnit; >
	<!ELEMENT WeftDensity (#PCDATA)>
	<!ATTLIST WeftDensity picks CDATA #IMPLIED>
	<!ATTLIST WeftDensity %lUnit; >
	<!ELEMENT WeftDensityRaw (#PCDATA)>
	<!ATTLIST WeftDensityRaw %lUnit; >
	<!ELEMENT WeftDensityFinished (#PCDATA)>
	<!ATTLIST WeftDensityFinished %lUnit; >
	<!ELEMENT Consumption (#PCDATA)>
	<!ATTLIST Consumption %wUnit; >
	<!ELEMENT ConsumptionWarpWithSelvedges (#PCDATA)>
	<!ATTLIST ConsumptionWarpWithSelvedges %wUnit; >
	<!ELEMENT ConsumptionWarpNoSelvedges (#PCDATA)>
	<!ATTLIST ConsumptionWarpNoSelvedges %wUnit; >
	<!ELEMENT ConsumptionWeft (#PCDATA)>
	<!ATTLIST ConsumptionWeft %wUnit; >
	<!ELEMENT RawWeightPerLength (#PCDATA)>
	<!ATTLIST RawWeightPerLength %wlUnit; >
	<!ELEMENT RawWeightPerSquareLength (#PCDATA)>
	<!ATTLIST RawWeightPerSquareLength %wl2Unit; >
	<!ELEMENT FinishedWeightPerLength (#PCDATA)>
	<!ATTLIST FinishedWeightPerLength %wlUnit; >
	<!ELEMENT FinishedWeightPerSquareLength (#PCDATA)>
	<!ATTLIST FinishedWeightPerSquareLength %wl2Unit; >
	<!ELEMENT WarpFibre (#PCDATA)>
	<!ATTLIST WarpFibre percentage CDATA #REQUIRED >
	<!ELEMENT FabricFibre (#PCDATA)>
	<!ATTLIST FabricFibre percentage CDATA #REQUIRED >
	<!ELEMENT FabricFibreFilCoupe (#PCDATA)>
	<!ATTLIST FabricFibreFilCoupe percentage CDATA #REQUIRED >
	<!ELEMENT Warp (WarpCode, WarpNotes, WarpReedNumber, WarpDenting, WarpBeamWidth, WarpingWidthSelvedges, WarpSource, Warp2Source?,
		WarpPatternCode, WarpPattern, WarpPatternExpanded, WarpPatternLeftover?,
		WarpPattern1?, WarpPattern1Expanded?, WarpPattern2?, WarpPattern2Expanded?, SelvedgePattern?, WarpLeftover, WarpRepeat,
		NumWarpRepeats, LeftoverThreads, TotalSelvedgeThreads, NumUsedYarns, NumWarpingSections, WarpBlankets, NumVariants, Variant*, WarpUsage*, Yarn*)>
		<!ELEMENT WarpCode (#PCDATA)>
		<!ELEMENT WarpNotes (#PCDATA)>
		<!ELEMENT WarpReedNumber (#PCDATA) >
		<!ATTLIST WarpReedNumber %lUnit; >
		<!ELEMENT WarpDenting (#PCDATA)>
		<!ELEMENT WarpBeamWidth (#PCDATA) >
		<!ATTLIST WarpBeamWidth %lUnit; >
		<!ELEMENT WarpingWidthSelvedges (#PCDATA) >
		<!ELEMENT WarpSource (#PCDATA)>
		<!ELEMENT Warp2Source (#PCDATA)>
		<!ELEMENT WarpPatternCode (#PCDATA)>
		<!ELEMENT WarpPattern (#PCDATA)>
		<!ELEMENT WarpPatternExpanded (#PCDATA)>
		<!ELEMENT WarpPatternLeftover (#PCDATA)>
		<!ELEMENT WarpPattern1 (#PCDATA)>
		<!ELEMENT WarpPattern1Expanded (#PCDATA)>
		<!ELEMENT WarpPattern2 (#PCDATA)>
		<!ELEMENT WarpPattern2Expanded (#PCDATA)>
		<!ELEMENT SelvedgePattern (#PCDATA)>
		<!ELEMENT WarpRepeat (#PCDATA)>
		<!ELEMENT NumWarpRepeats (#PCDATA)>
		<!ELEMENT LeftoverThreads (#PCDATA)>
		<!ELEMENT TotalSelvedgeThreads (#PCDATA)>
		<!ELEMENT NumUsedYarns (#PCDATA)>
		<!ELEMENT NumWarpingSections (#PCDATA)>
		<!ELEMENT WarpBlankets (#PCDATA)>
		<!ELEMENT NumVariants (#PCDATA)>

	<!ELEMENT Weft (WeftPatternCode, WeftPattern, WeftPatternExpanded, WeftRepeat, WeftRepeatDouble?, NumUsedYarns, WeftBlankets, NumVariants, Variant*, WeftUsage*, Yarn*)>
		<!ELEMENT WeftPatternCode (#PCDATA)>
		<!ELEMENT WeftPattern (#PCDATA)>
		<!ELEMENT WeftPatternExpanded (#PCDATA)>
		<!ELEMENT WeftRepeat (#PCDATA)>
		<!ELEMENT WeftRepeatDouble (#PCDATA)>
		<!ELEMENT NumUsedYarns (#PCDATA)>
		<!ELEMENT WeftBlankets (#PCDATA)>
		<!ELEMENT NumVariants (#PCDATA)>

	<!ELEMENT Dobby (NumShafts, SelvedgeShafts?, Drafting, DraftingCode, SelvedgeDrafting?, Shaft*)>
		<!ELEMENT NumShafts (#PCDATA)>
		<!ELEMENT NumSelvedgeShafts (#PCDATA)>
		<!ELEMENT Drafting (#PCDATA)>
		<!ELEMENT DraftingCode (#PCDATA)>
		<!ELEMENT SelvedgeDrafting (#PCDATA)>
		<!ELEMENT Shaft (#PCDATA)>
		<!ATTLIST Shaft No CDATA #REQUIRED >
		<!ATTLIST Shaft Threads CDATA #REQUIRED >

	<!ELEMENT Jacquard (NumHooks, WeftBytes, NumWefts, LoomLayout, WeftLayout, FormatName, CardName)>
		<!ELEMENT NumHooks (#PCDATA)>
		<!ELEMENT WeftBytes (#PCDATA)>
		<!ELEMENT NumWefts (#PCDATA)>
		<!ELEMENT LoomLayout (#PCDATA)>
		<!ELEMENT WeftLayout (#PCDATA)>
		<!ELEMENT FormatName (#PCDATA)>
		<!ELEMENT CardName (#PCDATA)>

	<!ELEMENT Price (PriceWarping, PriceSizing, PriceWeaving, PriceDarningRaw, PricePieceDyeing, PriceFinishing, PriceDarningFinished, PriceTransport, PiecesPerLength?, PriceTailoring?, RawMargin, OperatingMargin, Financing, Provisions, CommercialMargin)>
		<!ELEMENT PriceWarping (#PCDATA)>
		<!ATTLIST PriceWarping %lUnit; >
		<!ELEMENT PriceSizing (#PCDATA)>
		<!ATTLIST PriceSizing %wUnit; >
		<!ELEMENT PriceWeaving (#PCDATA)>
		<!ELEMENT PriceDarningRaw (#PCDATA)>
		<!ATTLIST PriceDarningRaw %lUnit; >
		<!ELEMENT PricePieceDyeing (#PCDATA)>
		<!ATTLIST PricePieceDyeing %wUnit; >
		<!ELEMENT PriceFinishing (#PCDATA)>
		<!ATTLIST PriceFinishing %lUnit; >
		<!ELEMENT PriceDarningFinished (#PCDATA)>
		<!ATTLIST PriceDarningFinished %lUnit; >
		<!ELEMENT PriceTransport (#PCDATA)>
		<!ATTLIST PriceTransport %wUnit; >
		<!ELEMENT PiecesPerLength (#PCDATA)>
		<!ATTLIST PiecesPerLength %lUnit; >
		<!ELEMENT PriceTailoring (#PCDATA)>
		<!ELEMENT RawMargin (#PCDATA)>
		<!ELEMENT OperatingMargin (#PCDATA)>
		<!ELEMENT Financing (#PCDATA)>
		<!ELEMENT Provisions (#PCDATA)>
		<!ELEMENT CommercialMargin (#PCDATA)>

	<!ELEMENT WarpUsage (BlanketCodes?, RepeatThreads, SelvedgeThreads, TotalThreads, SelvedgeWeight, TotalWeight, NetWeight, NumberOfCones?)>
	<!ATTLIST WarpUsage letterID CDATA #REQUIRED >
		<!ELEMENT BlanketCodes (#PCDATA)>
		<!ELEMENT RepeatThreads (#PCDATA)>
		<!ATTLIST RepeatThreads percentage CDATA #REQUIRED >
		<!ELEMENT SelvedgeThreads (#PCDATA)>
		<!ELEMENT TotalThreads (#PCDATA)>
		<!ELEMENT SelvedgeWeight (#PCDATA)>
		<!ATTLIST SelvedgeWeight %wUnit; >
		<!ELEMENT TotalWeight (#PCDATA)>
		<!ATTLIST TotalWeight %wUnit; >
		<!ATTLIST TotalWeight percentage CDATA #REQUIRED >
		<!ELEMENT NetWeight (#PCDATA)>
		<!ATTLIST NetWeight %wUnit; >
		<!ELEMENT NumberOfCones (#PCDATA)>
		<!ATTLIST NumberOfCones coneSections CDATA #REQUIRED >

	<!ELEMENT WeftUsage (BlanketCodes?, RepeatThreads, RepeatThreadsDouble?, TotalWeight, NetWeight, WeftDensity?)>
	<!ATTLIST WeftUsage letterID CDATA #REQUIRED >
		<!ELEMENT BlanketCodes (#PCDATA)>
		<!ELEMENT RepeatThreads (#PCDATA)>
		<!ATTLIST RepeatThreads percentage CDATA #REQUIRED >
		<!ELEMENT RepeatThreadsDouble (#PCDATA)>
		<!ATTLIST RepeatThreadsDouble percentage CDATA #REQUIRED >
		<!ELEMENT TotalWeight (#PCDATA)>
		<!ATTLIST TotalWeight %wUnit; >
		<!ATTLIST TotalWeight percentage CDATA #REQUIRED >
		<!ELEMENT NetWeight (#PCDATA)>
		<!ATTLIST NetWeight %wUnit; >
		<!ELEMENT WeftDensity (#PCDATA)>
		<!ATTLIST WeftDensity %lUnit; >

	<!ELEMENT Variant (VariantName, VariantNotes, VariantLength?, VariantSelected, Yarn*)>
		<!ELEMENT VariantName (#PCDATA)>
		<!ELEMENT VariantNotes (#PCDATA)>
		<!ELEMENT VariantLength (#PCDATA)>
		<!ATTLIST VariantLength %lUnit; >
		<!ELEMENT VariantSelected (#PCDATA)>

	<!ELEMENT Yarn (YCode, YName, YColorCode, YColorName, Count, Ply, Twists, TwistContraction, TwistSense, Color*, Fibre?)>
	<!ATTLIST Yarn letterID CDATA #REQUIRED >
		<!ELEMENT YCode (#PCDATA)>
		<!ELEMENT YName (#PCDATA)>
		<!ELEMENT YColorCode (#PCDATA)>
		<!ELEMENT YColorName (#PCDATA)>
		<!ELEMENT Count (#PCDATA)>
		<!ATTLIST Count  %cUnit; >
		<!ELEMENT Ply (#PCDATA)>
		<!ELEMENT Twists (#PCDATA)>
		<!ATTLIST Twists %lUnit; >
		<!ELEMENT TwistContraction (#PCDATA)>
		<!ELEMENT TwistSense (#PCDATA)>

	<!ELEMENT Color (#PCDATA)>
	<!ATTLIST Color percentage CDATA #REQUIRED >
	<!ATTLIST Color CIE_Lab CDATA #IMPLIED >
	<!ATTLIST Color RGB CDATA #REQUIRED >
	<!ATTLIST Color Cname CDATA #REQUIRED >

	<!ELEMENT Fibre (#PCDATA)>
	<!ATTLIST Fibre percentage CDATA #REQUIRED >

