2011-10-19 3 views
0

J'avais donc des choses à écrire. L'information était assez régulière, et le format est fixe. (Statistiques pour une créature dans un RPG). J'ai donc pensé, Xml est un excellent format pour cela (mieux que Latex).Appuyer sur un document Xml

Voici le résultat:

<?xml version="1.0" encoding="utf-8"?> 
<Entity type="Oni"> 
    <Fluff> 
    <Name>Wakaalu no Oni</Name> 
    <Description> 
     It is a bit too angular to be human, its limbs look almost sharp. 
    </Description> 
    </Fluff> 
    <Cruch> 

    <Rings> 
     <Earth Stamina="4" Willpower="4" /> 
     <Fire Agility="5" Intelligence="4" /> 
     <Water Perception="3" Strength="3" /> 
     <Air Awareness="3" Reflexes="4" /> 
    </Rings> 
    <Skills> 
     <Skill Name="Jujitsu" Rank="3" /> 
    </Skills> 

    <Defense> 
     <ToHit TN="30" /> 
     <Reduction amount="10, 4 against Jade" /> 
    </Defense> 

    <Wounds> 
     <WoundRank penalty="+5" taken="16" /> 
     <WoundRank penalty="+10" taken="32" /> 
     <WoundRank penalty="+15" taken="48" /> 
     <WoundRank penalty="Dead" taken="72" /> 
    </Wounds> 

    <Attacks> 
     <Attack Name="Chop/Kick" attack="8k5" Damage="6k3" />  
    </Attacks> 

    <Abilities> 
     <SpecialAbilities> 
     <SpecialAbility name="Honour Of Jidoku"> 
      <Effect> 
      Any time anyone directly causes harm to come to the Oni, 
      they must make a willpower roll + honour,at TN=30. 
      If they fail then one of the following affects takes place: (the duration is at the GM's discression). 
      <RolledResultTable> 
       <Heading Result="Effect" Roll="1d100" /> 
       <Line Result="Immediately Lose 1 Point of Honour" Roll="0" /> 
       <Line Result="Compassion: You must spend a Void point before you are able to act on behalf of someone of lower Status or social caste." Roll="1-10" /> 
       <Line Result="Courage: When facing an opponent of higher Glory or Status, or when facing a Shadowlands opponent, the TN of all rolls you make is increased by +5." Roll="11-20" /> 
       <Line Result="Courtesy: Any time you make a Social Skill Roll to apologize or avoid giving offense, you must call a Raise for no effect, or the roll will automatically fail." Roll="21-30" /> 
       <Line Result="Duty: You cannot spend Void Points to negate Wounds." Roll="31-40" /> 
       <Line Result="Honesty: You cannot spend Void points on any Sincerity Skill Roll to which the Honesty emphasis could apply (whether or not you have the emphasis)." Roll="41-50" /> 
       <Line Result="Honor: You cannot add your Honor Rank to any roll to resist Intimidation or Temptation." Roll="51-60" /> 
       <Line Result="Sincerity: Any time you are rolling the Sincerity Skill to convince someone of what you are saying, you must call an extra Raise for no effect, or the roll automatically fails." Roll="61-70" /> 
       <Seperator /> 
       <Line Result="Control: Re-roll any Social Skill Roll, once per session," Roll="71-74" /> 
       <Line Result="Determination: Negate all TN/Wound penalties on one Skill or Spell Casting roll, once per session." Roll="75-78" /> 
       <Line Result="Insight: Re-roll any roll that used the Awareness Trait, once per session." Roll="79-82" /> 
       <Line Result="Knowledge: Re-roll any roll that used the Intelligence Trait, once per session." Roll="83-86" /> 
       <Line Result="Perfection: any one die of your choice on a Skill Roll to explode , once per session." Roll="87-90" /> 
       <Line Result="Strength: Re-roll any damage Roll, once per session." Roll="91-94" /> 
       <Line Result="Will: negate 10 Wounds at the moment they are suffered, once per session." Roll="94-98" /> 
       <Line Result="Temporally gain (a rank of) the Perceived Honour advantage." Roll="99" /> 

      </RolledResultTable> 
      </Effect> 
     </SpecialAbility> 
     </SpecialAbilities> 
    </Abilities> 
    </Cruch> 
</Entity> 

semble assez agréable. (Bien que je ne suis pas opposé à changer autour.) Seulement mince je suis un peu incertain est le RolledResultTable.

Quoi qu'il en soit, maintenant que j'ai produit un tel document, je dois le mettre sous forme de consommable plus humain. Je suis conscient qu'il existe des mécanismes pour cela. quelque chose appelé un XSLT? Je sais que CSS peut être utilisé pour cela (je l'ai essayé une fois, d'une manière simple), mais j'ai entendu dire que ce n'était pas la façon de faire les choses. La seule façon que je sais est d'écrire un programme C# qui interprète le Xml. (qui ne semble pas être une bonne solution) Alors, comment créer une belle forme de lecture humaine à partir d'un document XML? Si ce n'est pas le cas avec des tables, au moins avec les en-têtes

Répondre

1

XSLT est utilisé pour transformer XML en une autre forme. Si vous voulez changer ce XML en HTML ou d'autres formes typographiques, XSLT est un excellent moyen de le faire et beaucoup plus facile que d'essayer de réinventer la roue XSLT avec C#.

CSS est pour styler ce que vous avez. Définir les polices, ajouter des couleurs et des bordures pour le mettre simplement. Ce n'est pas utilisé pour mettre les choses sous une forme lisible par l'homme. XSLT est pour ça.

3

Inclure une feuille de style XSL en haut de votre document XML en tant que tel:

<?xml-stylesheet type="text/xsl" href="rpg.xsl"?> 

Ensuite, au sein de cette feuille de style que vous pouvez utiliser quelques opérations simples pour transformer votre document XML en HTML qui peut alors être style avec CSS. Voici XSL de base:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:output method="html"/> 

<xsl:template match="/"> 
<html> 
<body> 

<h2>Rings</h2> 
    <table border="1"> 
    <tr> 
    <th>Earth</th> 
    <th>Fire</th> 
    <th>Air</th> 
    <th>Water</th> 
    </tr> 
    <xsl:for-each select="Entity/Rings"> 
    <tr> 
     <td><xsl:value-of select="earth"/></td> 
     <td><xsl:value-of select="fire"/></td> 
     <td><xsl:value-of select="air"/></td> 
     <td><xsl:value-of select="water"/></td> 
    </tr> 
    </xsl:for-each> 
</table> 
</body> 

</xsl:template> 

Hope this helps.

Cela vaut la peine de lire par: http://www.w3schools.com/xsl/

+0

Je n'ai pas actaully essayé. Mais comme je comprends XSL (à partir de votre lien) La table des anneaux sera vide, car valeur de ne pas pop-up la valeur des attributs, non? –

Questions connexes