Každý, kto sa už niekedy stretol s nastavovaním
custom config sections vo
web.config-u, mi dá asi za pravdu, keď poviem,
že konfigurovať takúto sekciu nemusí byť práve ľahké. Zvlášť preto, že nie vždy programátor vie, aké všetky elementy, prípadné atribúty,
sú danou sekciou podporované a to už vôbec nehovorím o hodnotách atribútov. Tento problém je možné odstrániť využitím
Intellisense,
ktorý poskytuje
Visual Studio.
Intellisense, ktorý je k dispozícii pri editácii web.config-u, je zobrazovaný na základe xsd schém, ktoré definujú štruktúru
jednotlivých elementov ako aj súboru ako takého. Ak teda chceme rozšíriť Intellisense Visual Studia pri editácií web.config-u, stačí
rozšíriť existujúce schémy. Jeden zo spôsobov, ako to spraviť, spočíva v tom, že si vytvoríme xsd súbor, ktorý bude definovať schému pre
zvolenú config section.
|
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="system.mapservice">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="themes">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="add">
<xsd:complexType>
<xsd:attribute name="key" type="xsd:string" />
<xsd:attribute name="url" type="xsd:string" />
<xsd:attribute name="id" type="xsd:int" />
<xsd:attribute name="primaryField" type="xsd:string" />
<xsd:attribute name="borderWidth" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:enumeration value="1" />
<xsd:enumeration value="2" />
<xsd:enumeration value="3" />
<xsd:enumeration value="4" />
<xsd:enumeration value="5" />
<xsd:enumeration value="6" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="borderColor" type="xsd:string" />
<xsd:attribute name="fillColor" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
|
|
Príklad xsd schémy "MapServiceConfigSection.xsd"
|
Následne túto schému pripojíme k pôvodnému súboru príkazom include, v ktorom definujume umiestnenie našej vlastnej schémy.
Súbory s originálnymi schémami, ktoré využíva Visual Studio, nájdeme v priečinku
"<Visual Studio Install Folder>\Xml\Schemas\" (napr.: "c:\Program
Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas"). Súbor, ktorý treba doplniť príkazom include má názov v tvare
"DotNetConfig[verzia framework-u].xsd" (napr.: "DotNetConfig.xsd"). Príkaz include treba vložiť na prvé miesto root
elementu schema, uložiť zmeny vykonané v súbore a je to.
|
<?xml version="1.0" encoding="us-ascii"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vs="http://schemas.microsoft.com/Visual-Studio-Intellisense"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
vs:helpNamespace="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<xs:include schemaLocation="MapServiceConfigSection.xsd"/>
<xs:element name="configuration">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##any" processContents="lax" />
</xs:choice>
<xs:anyAttribute namespace="http://schemas.microsoft.com/XML-Document-Transform" processContents="strict"/>
</xs:complexType>
</xs:element>
</xs:schema>
|
|
Použitie príkazu include na zahrnutie custom xsd schémy
|
Visual Studio automaticky načíta danú schému (bez nutnosti uplatnenia
metódy "vystúpiť/nastúpiť") a pri editácii web.configu ponúkne Intellisense (ale len v prípade, že v nami definovanej schéme nie je žiadna chyba ;)).
|
|
Ukážka využitia Intellisense
|