schade.
hier 2 Vorschläge, die vom xml her sowohl valid als auch well-formed sind:
Die 1. habe ich selbst zusammenkopiert, die 2. habe ich mir aus der dtd mit WSAD erzeugen lassen.
Die in der dtd (in dem Teil wo <!Element und so ähnlich steht) festgelegten Beschränkungen für die Datenstruktur sind nicht besonders strikt (
? für kann, muss aber nicht.
* für: kann beliebig oft vorkommen
)
Deshalb gibt es viele unterschiedliche Optionen.
Die Dateien sind natürlich nur vom xml Standpunkt korrekt. Ob das die richtige Konfiguration für ISAPI ist, ist nochmal ne andere frage:
Trotzdem war das ein schönen Übungsbeispiel.
Was ich ein bischen komisch finde ist, dass xml Parsermeldungen eigentlich normal immer an die Konsole weitergegeben oder zumindest ins log geschrieben werden.
Typisch steht da sowas wie tag xxx expects closing tag in line xxx.
Und wenn man sich da ein bischen dran gewöhnt hat ist das eigentlich alles was man braucht und viel besser als eine Notes.ini zur Konfiguration.
Naja SAP beschäftigt sich vielleicht nicht mit so einem Tüdelskram. Da haben technische Personen keine Fehler zu machen. Wozu braucht man dann Fehlermeldungen?
xml1:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ISAPI-config[
<!ELEMENT ISAPI-config ( filter, extension, ( mapping | config )* )>
<!ATTLIST ISAPI-config
version CDATA #REQUIRED
>
<!ELEMENT filter (log-path?)>
<!ATTLIST filter
name CDATA #IMPLIED
log-level CDATA "2"
log-flags CDATA "0"
debug-flags CDATA "0"
priority ( high | medium | low ) "high"
extension-url CDATA "/scripts/IisProxy.dll"
IIS-check-auth ( true | false ) "true"
>
<!ELEMENT extension ( keystore-dir?, log-path?, data-path?, trace-path? )>
<!ATTLIST extension
name CDATA #IMPLIED
log-level CDATA "2"
log-flags CDATA "0"
debug-flags CDATA "0"
access ( filter | direct | both ) "filter"
>
<!ELEMENT keystore-dir (#PCDATA)>
<!ELEMENT log-path (#PCDATA)>
<!ELEMENT data-path (#PCDATA)>
<!ELEMENT trace-path (#PCDATA)>
<!ELEMENT mapping ( source+, target, compress-types*,
protocol-header?, certificate-header?, cert-chain-header?, cipher-header?, keysize-header?,
keystore-path?, log-path?, data-path? )>
<!ATTLIST mapping
name CDATA #IMPLIED
log-level CDATA "2"
log-flags CDATA "0"
debug-flags CDATA "0"
close-socket-delay CDATA "1000"
thread-count CDATA "10"
max-socket-age CDATA "10"
>
<!ELEMENT source (protocol, host?, port?, prefix, new-prefix?)>
<!ATTLIST source
access ( filter | direct | both ) "both"
>
<!ELEMENT protocol (#PCDATA)>
<!ELEMENT host (#PCDATA)>
<!ELEMENT port (#PCDATA)>
<!ELEMENT prefix (#PCDATA)>
<!ELEMENT new-prefix (#PCDATA)>
<!ELEMENT target (protocol, host, port)>
<!ELEMENT compress-types (#PCDATA)>
<!ATTLIST compress-types
min-size CDATA "1024"
>
<!ELEMENT protocol-header (#PCDATA)>
<!ELEMENT certificate-header (#PCDATA)>
<!ELEMENT cert-chain-header (#PCDATA)>
<!ELEMENT cipher-header (#PCDATA)>
<!ELEMENT keysize-header (#PCDATA)>
<!ELEMENT keystore-path (#PCDATA)>
<!ELEMENT config ( source+ )>
]>
<ISAPI-config version="">
<filter IIS-check-auth="true" debug-flags="0" extension-url="/scripts/IisProxy.dll" log-flags="0" log-level="2" name="" priority="high">
<log-path>log-path</log-path>
</filter>
<extension access="filter" debug-flags="0" log-flags="0" log-level="2" name="">
<keystore-dir>keystore-dir</keystore-dir>
<log-path>log-path</log-path>
<data-path>data-path</data-path>
<trace-path>trace-path</trace-path>
</extension>
<mapping close-socket-delay="1000" debug-flags="0" log-flags="0" log-level="2" max-socket-age="10" name="" thread-count="10">
<source access="both">
<protocol>protocol</protocol>
<host>host</host>
<port>port</port>
<prefix>prefix</prefix>
<new-prefix>new-prefix</new-prefix>
</source>
<target>
<protocol>protocol</protocol>
<host>host</host>
<port>port</port>
</target>
<compress-types min-size="1024">compress-types</compress-types>
<protocol-header>protocol-header</protocol-header>
<certificate-header>certificate-header</certificate-header>
<cert-chain-header>cert-chain-header</cert-chain-header>
<cipher-header>cipher-header</cipher-header>
<keysize-header>keysize-header</keysize-header>
<keystore-path>keystore-path</keystore-path>
<log-path>log-path</log-path>
<data-path>data-path</data-path>
</mapping>
</ISAPI-config>
xml2:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE ISAPI-config[
<!ELEMENT ISAPI-config ( filter, extension, ( mapping | config )* )>
<!ATTLIST ISAPI-config
version CDATA #REQUIRED
>
<!ELEMENT filter (log-path?)>
<!ATTLIST filter
name CDATA #IMPLIED
log-level CDATA "2"
log-flags CDATA "0"
debug-flags CDATA "0"
priority ( high | medium | low ) "high"
extension-url CDATA "/scripts/IisProxy.dll"
IIS-check-auth ( true | false ) "true"
>
<!ELEMENT extension ( keystore-dir?, log-path?, data-path?, trace-path? )>
<!ATTLIST extension
name CDATA #IMPLIED
log-level CDATA "2"
log-flags CDATA "0"
debug-flags CDATA "0"
access ( filter | direct | both ) "filter"
>
<!ELEMENT keystore-dir (#PCDATA)>
<!ELEMENT log-path (#PCDATA)>
<!ELEMENT data-path (#PCDATA)>
<!ELEMENT trace-path (#PCDATA)>
<!ELEMENT mapping ( source+, target, compress-types*,
protocol-header?, certificate-header?, cert-chain-header?, cipher-header?, keysize-header?,
keystore-path?, log-path?, data-path? )>
<!ATTLIST mapping
name CDATA #IMPLIED
log-level CDATA "2"
log-flags CDATA "0"
debug-flags CDATA "0"
close-socket-delay CDATA "1000"
thread-count CDATA "10"
max-socket-age CDATA "10"
>
<!ELEMENT source (protocol, host?, port?, prefix, new-prefix?)>
<!ATTLIST source
access ( filter | direct | both ) "both"
>
<!ELEMENT protocol (#PCDATA)>
<!ELEMENT host (#PCDATA)>
<!ELEMENT port (#PCDATA)>
<!ELEMENT prefix (#PCDATA)>
<!ELEMENT new-prefix (#PCDATA)>
<!ELEMENT target (protocol, host, port)>
<!ELEMENT compress-types (#PCDATA)>
<!ATTLIST compress-types
min-size CDATA "1024"
>
<!ELEMENT protocol-header (#PCDATA)>
<!ELEMENT certificate-header (#PCDATA)>
<!ELEMENT cert-chain-header (#PCDATA)>
<!ELEMENT cipher-header (#PCDATA)>
<!ELEMENT keysize-header (#PCDATA)>
<!ELEMENT keystore-path (#PCDATA)>
<!ELEMENT config ( source+ )>
]>
<ISAPI-config version="1.3">
<filter name="IISPROXY">
<extension name="IISPROXY">
<mapping name="IISPROXY">
<source>
<protocol>http</protocol>
<host>10.14.88.11</host>
<prefix>/irj/</prefix>
</source>
<target>
<protocol>http</protocol>
<host>10.14.88.11</host>
<port>82</port>
</target>
<compress-types>text/html, text/plain, text/css</compress-types>
</mapping>
<config>
<source>
<protocol>http</protocol>
<host>localhost</host>
<prefix>/IisProxy/</prefix>
</source>
<source>
<protocol>https</protocol>
<host>localhost</host>
<prefix>/IisProxy/</prefix>
</source>
</config>
</ISAPI-config>