XSD మూలకం పునఃరూపకరణ (Element Substitution)
- ముందస్తు పేజీ XSD <anyAttribute>
- తదుపరి పేజీ XSD ఇన్స్టాన్స్
XML షేమా ద్వారా, ఒక అంశం మరొక అంశాన్ని పునఃప్రతిపాదించవచ్చు.
అంశ పునఃప్రతిపాదన
ఉదాహరణకు, మా వినియోగదారులు యుకె మరియు నార్వే నుండి వస్తారు. మేము వినియోగదారులకు XML డాక్యుమెంట్లో నార్వేసీ లేదా ఇంగ్లీష్ అంశాలను ఎంచుకోవచ్చు అనే సామర్థ్యాన్ని కలిగివుండాలి.
ఈ సమస్యను పరిష్కరించడానికి, మేము XML షేమాలో ఒక నిర్వచనాన్ని నిర్వహించవచ్చు. substitutionGroupమొదట, మేము ప్రధాన అంశాన్ని ప్రకటిస్తాము, ఆపై మేము ప్రాధానిక అంశాలను ప్రకటిస్తాము, ఈ ప్రాధానిక అంశాలు ప్రధాన అంశాన్ని పునఃప్రతిపాదించవచ్చు.
<xs:element name="name" type="xs:string"/> <xs:element name="navn"> substitutionGroup="name"/>
పైని ఉదాహరణలో, "name" కంపొనెంట్ ప్రధాన కంపొనెంట్ గా ఉంది, మరియు "navn" కంపొనెంట్ "name" కంపొనెంట్ను పునఃరూపొందించగలదు.
ఏదో ఒక XML schema యొక్క ముక్కలను చూడండి:
<xs:element name="name" type="xs:string"/> <xs:element name="navn" substitutionGroup="name"/> <xs:complexType name="custinfo"> <xs:sequence> <xs:element ref="name"/> </xs:sequence> </xs:complexType> <xs:element name="customer" type="custinfo"/> <xs:element name="kunde" substitutionGroup="customer"/>
పైని schema నిమిత్తం ఈ విధంగా ఉన్న XML డాక్యుమెంట్ క్రమబద్ధంగా ఉండాలి:
<customer> <name>John Smith</name> </customer>
లేదా ఈ విధంగా కూడా:
<kunde> <navn>John Smith</navn> </kunde>
కంపొనెంట్ మార్పిడి నిరోధించడం
కొన్ని కంపొనెంట్లను కొన్ని ప్రత్యేక కంపొనెంట్లను మార్పిడి చేయడానికి నిరోధించడానికి block అటువంటి అంశాన్ని ఉపయోగించండి:
<xs:element name="name" type="xs:string"> block="substitution"/>
ఏదో ఒక XML schema యొక్క ముక్కలను చూడండి:
<xs:element name="name" type="xs:string" block="substitution"/> <xs:element name="navn" substitutionGroup="name"/> <xs:complexType name="custinfo"> <xs:sequence> <xs:element ref="name"/> </xs:sequence> </xs:complexType> <xs:element name="customer" type="custinfo" block="substitution"/> <xs:element name="kunde" substitutionGroup="customer"/>
క్రమబద్ధమైన XML డాక్యుమెంట్ ఈ విధంగా ఉండాలి (పైని schema నిమిత్తం):
<customer> <name>John Smith</name> </customer>
కానీ క్రింది డాక్యుమెంట్ క్రమబద్ధంగా లేదు:
<kunde> <navn>John Smith</navn> </kunde>
substitutionGroup ఉపయోగించండి
అద్దంతో మార్పిడి చేయగల కంపొనెంట్ రకం ముఖ్య కంపొనెంట్ రకంతో అదే ఉండాలి లేదా ముఖ్య కంపొనెంట్ రకం నుండి ఉద్భవించాలి. అద్దంతో మార్పిడి చేయగల కంపొనెంట్ రకం ముఖ్య కంపొనెంట్ రకంతో అదే ఉండితే, మీరు అద్దంతో మార్పిడి చేయగల కంపొనెంట్ రకం నిర్ధారించకూడదు.
మీరు మరియు substitutionGroup లోని అన్ని మూలకాలు (ప్రధాన మూలకాలు మరియు పునఃరూపకరణ మూలకాలు) అన్నింటినీ గ్లోబల్ ఎలిమెంట్స్ గా పేర్కొనవలసినది. లేకపోతే ఇది పని చేయలేదు!
గ్లోబల్ ఎలిమెంట్స్ ఏమిటి?
గ్లోబల్ ఎలిమెంట్స్ అనేది "schema" మూలకం యొక్క ప్రత్యక్ష సంబంధిత మూలకాలు! లోకల్ ఎలిమెంట్స్ అనేది ఇతర మూలకాలలో నిర్దేశించబడిన మూలకాలు.
- ముందస్తు పేజీ XSD <anyAttribute>
- తదుపరి పేజీ XSD ఇన్స్టాన్స్