Ho il compito di impostare il profiling condizionale - un metodo per taggare blocchi di XML con un attributo, che verrà poi utilizzato come valore condizionale per estrarre sottoinsieme di tale XML. Dai un'occhiata ad un'altra definizione / esempio: DITA profiling L'XML è documenti equivalenti ai libri stampati, cioè documenti che vengono spesso guardati da un essere umano, anche se indirettamente. Pertanto sto osservando alcuni requisiti qui:
- mantenendo la lista valori breve - in modo che non pregiudichi la leggibilità del documento
- essere in grado di elaborare con strumenti XML standard - una lista separata da spazi all'interno di un attributo è probabilmente ancora valida, ma preferirei non usare troppe espressioni regolari per questo
- essere ovvio per vari utenti, tra cui terze parti, il cui contenuto va dove
- Essere facile da mantenere in futuro
Quindi una soluzione facile è:
<test condition="print epub"/>
<test condition="web kf8 app mobi"/>
Il problema con questo:
- Man mano che la lista cresce il valore dell'attributo può essere un po 'prolisso
- È necessario dichiarare esplicitamente ogni valore anche se si tratta di uno scenario di questo contro tutto il resto
Pertanto, sto anche esaminando altri approcci come:
- Usando i modificatori "+" e "-", Apache htaccess style per sovrascrivere la cascata di default del profiling - per impostazione predefinita tutto il contenuto va ovunque e se vogliamo escludere un po 'diciamo semplicemente "-kindle". Richiede l'analisi dell'intero albero, non è supportato dagli strumenti di modifica e uno ha bisogno di regexp il valore dell'attributo un po 'più profondo ...
- Uso di un file intermedio per definire gruppi di valori come "altro" o "non stampabile", esempio di questo in DITA . Permette sia XML concisi che diversi raggruppamenti e valori per ogni documento, ma crea un certo livello di astrazione che potrebbe renderlo un po 'meno ovvio per una terza parte?
Complessivamente, se hai ricevuto tale XML e sei stato incaricato di elaborarlo, quale opzione preferiresti ricevere? Se hai esperienze del genere, anche in aree non correlate come queste, non esitare a commentare!