返回目录
Chapter 16 第十六章:使用 XSLT 修改原版 XML
开发者文档 更新于 2025-05-22 23:01:26

第十六章:使用 XSLT 修改原版 XML

✅ 本章目标

通过本章学习,你将掌握:

🎯 应用场景

🧱 示例:修改火把的名称与模型

我们将修改原版的 torch 装备,将其名称改为“神圣火把”,模型 mesh 改为 torch_dragonfire。

📂 文件结构

你只需要以下结构:

Modules/
└── YourMod/
    └── ModuleData/
        └── items.xslt   

📝 items.xslt 文件内容

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <!-- 默认复制所有节点和属性 -->
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*" />
    </xsl:copy>
  </xsl:template>

  <!-- 修改 id="torch" 的物品 -->
  <xsl:template match="Item[@id='torch']">
    <xsl:copy>
      <!-- 修改名称与 mesh -->
      <xsl:attribute name="name">神圣火把</xsl:attribute>
      <xsl:attribute name="mesh">torch_dragonfire</xsl:attribute>
      <!-- 保留其他属性 -->
      <xsl:apply-templates select="@*[name() != 'name' and name() != 'mesh'] | node()" />
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

⚙️ SubModule.xml 中的注册方式

<Xmls>
  <!-- 注册 items.xslt(无需 .xml 文件) -->
  <XmlNode>
    <XmlName id="Items" path="items"/>
    <IncludedGameTypes>
      <GameType value="Campaign"/>
      <GameType value="CampaignStoryMode"/>
      <GameType value="Sandbox"/>
    </IncludedGameTypes>
  </XmlNode>
</Xmls>

🔍 验证效果

进入游戏后可使用以下方式确认修改是否生效:

🔁 更多可修改项

你可以通过 .xslt 文件修改以下内容:

文件名描述
items.xslt装备、物品
lords.xsltNPC、领主
spnpc.xslt特殊角色
crafting_pieces.xslt锻造配件
party_templates.xslt部队模板
clans.xslt家族定义

✅ 总结

特性描述
🛠 无需复制官方 XML仅需 items.xslt 等
🚀 快速增量修改仅变更你需要的内容
💾 最小补丁干预不与其他 MOD 冲突(推荐)
🧩 支持所有 XML 数据类型项目通用