wow-api-xml-schema について
World of Warcraft アドオンの UI ファイルで使う XML スキーマを参照するスキルです。宣言的にレイアウトやウィジェットを定義する開発者向けに、XML 要素・属性と Lua API との関係を説明します。
主な機能
- 01WoW アドオン XML 要素を解説
- 02フレーム、リージョン、フォント、アニメーションを網羅
- 03属性と Lua API の対応を説明
- 04テンプレートと継承関係を解説
- 05スキーマ参照ファイルを提供
活用シーン
- 01アドオンの .xml UI ファイルを作成・確認
- 02フレーム、テクスチャ、アニメーションを定義
- 03アンカー、スクリプト、サイズ制限を設定
- 04VS Code で XML を検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jburlison/ wowaddonapiagents --skill wow-api-xml-schemaインストール後、Claude Code で/wow-api-xml-schemaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/XML-ANIMATIONS.mdXML-FONTS.mdXML-FOUNDATION.mdXML-FRAME-TYPES.mdXML-REGIONS.md詳細
WoW XML スキーマ
このスキルでは、World of Warcraft アドオン開発向けの XML スキーマを解説します。XML ファイルでは、フレーム、テクスチャ、フォント文字列、フォント、アニメーションなどのユーザーインターフェイス要素を宣言的に定義します。ほとんどの UI 機能は Widget API を使って Lua からも利用できますが、XML を使うとレイアウト、テンプレート、ウィジェット階層を構造的に定義できます。
信頼できる情報源: https://warcraft.wiki.gg/wiki/XML_schema XSD ファイル: https://raw.githubusercontent.com/Gethe/wow-ui-source/live/Interface/AddOns/Blizzard_SharedXML/UI.xsd 最終更新: Patch 12.0.0(Retail のみ) 対象範囲: WoW アドオンの
.xmlファイルで使用されるすべての XML 要素と属性です。
このスキルを使用する場面
次のような場合にこのスキルを使用してください。
- WoW アドオンの
.xmlUI 定義ファイルを記述または読み取る - XML でフレーム、テクスチャ、フォント文字列、アニメーションを定義する
- XML 仮想テンプレート(
virtual="true")と継承(inherits="")を設定する - どの XML 属性がどの Lua API 呼び出しに対応するかを理解する
- XML でアンカー、レイヤー、スクリプト、キー値、サイズ変更の境界を設定する
- 適切な名前空間宣言を含む
<Ui>ルート要素を設定する - XML からファイルを読み込むために
<Include>タグと<Script>タグを使用する - テキストのスタイル設定用に
<Font>オブジェクトまたは<FontFamily>オブジェクトを定義する - アニメーショングループとアニメーションを宣言的に作成する
- 組み込みフレーム(
intrinsic="true")を作成する - XML 要素の継承階層を理解する(例:
ButtonはFrameを継承し、FrameはLayoutFrameを継承します)
他のスキルとの関係
| スキル | 関係 |
|---|---|
wow-api-widget | ウィジェットで呼び出す Lua 側の Widget API メソッドを扱います。このスキルでは、宣言的な XML 側の定義を扱います。多くの XML 属性は Widget API メソッドに直接対応します。 |
wow-addon-structure | .toc ファイル形式とアドオンの読み込みを扱います。XML ファイルは .toc に記載され、順番に読み込まれます。 |
wow-api-framexml | FrameXML ヘルパー関数とミックスインを扱います。XML の mixin 属性と secureMixin 属性は、そこで解説される Lua ミックスインを参照します。 |
wow-lua-api | Lua 5.1 環境を扱います。<Script> タグはその環境内で Lua コードを実行します。 |
ウィジェット階層(XML 要素)
<Ui> -- Root element; encloses all other tags
├── <Include /> -- Loads another .xml or .lua file
├── <Script /> -- Executes inline or file-based Lua code
├── <Font /> -- Defines a reusable font object
├── <FontFamily /> -- Defines fonts per alphabet/locale
│
├── <LayoutFrame> -- Abstract base: name, anchors, size, keyvalues, animations
│ ├── <Texture /> -- Draws an image, solid color, or gradient
│ │ ├── <MaskTexture /> -- Applies a mask to other textures
│ │ └── <Line /> -- Draws a line between two anchors
│ ├── <FontString /> -- Draws text
│ └── <Frame> -- Handles events, user interaction, contains child widgets
│ ├── <Button> -- Responds to clicks
│ │ ├── <CheckButton> -- Adds checked/unchecked state
│ │ └── <ItemButton> -- Intrinsic frame extending Button
│ ├── <ColorSelect> -- Color wheel + value picker
│ ├── <Cooldown> -- Rotating edge / swipe overlay
│ ├── <EditBox> -- Text input field
│ ├── <GameTooltip> -- Tooltip formatting
│ ├── <MessageFrame> -- Scrolling message display
│ ├── <Model> -- 3D model rendering
│ │ ├── <PlayerModel>
│ │ │ ├── <DressUpModel>
│ │ │ └── <TabardModel>
│ │ ├── <CinematicModel>
│ │ └── <UiCamera>
│ ├── <ModelScene> -- Scene-based 3D rendering
│ ├── <ScrollFrame> -- Scrollable container
│ ├── <ScrollingMessageFrame> -- Intrinsic scrolling messages
│ ├── <SimpleHTML> -- Renders HTML content
│ ├── <Slider> -- Value selector within a range
│ ├── <StatusBar> -- Fill bar (health, progress, etc.)
│ ├── <MovieFrame> -- Video playback
│ ├── <ArchaeologyDigSiteFrame>
│ ├── <QuestPOIFrame>
│ └── <ScenarioPOIFrame>
│
└── <AnimationGroup> -- Contains animations
└── <Animation> -- Abstract base for animations
├── <Alpha> -- Fades opacity
├── <Scale> -- Resizes
│ └── <LineScale>
├── <Translation> -- Moves position
│ └── <LineTranslation>
├── <Path> -- Moves through control points
├── <Rotation> -- Rotates around an origin
└── <TextureCoordTranslation> -- Shifts texture coordinates
リファレンスファイル
| リファレンス | 内容 |
|---|---|
| XML-FOUNDATION.md | 用語、XML 名前空間の設定、<Ui>、<Include>、<Script>、基本要素の <LayoutFrame>、<Anchors>、<Size>、<KeyValues>、<Animations> |
| XML-FRAME-TYPES.md | <Frame> とすべてのサブタイプ:Button、CheckButton、ItemButton、ColorSelect、Cooldown、EditBox、GameTooltip、MessageFrame、Model(およびサブタイプ)、ScrollFrame、ScrollingMessageFrame、SimpleHTML、Slider、StatusBar、POI フレーム |
| XML-REGIONS.md | <Texture>、<MaskTexture>、<Line>、<FontString> と共通の子要素:<Color>、<Gradient>、<TexCoords>、<Shadow>、<Inset>、<Dimension> |
| XML-FONTS.md | <Font>、<FontFamily>、<FontHeight>、<Member> |
| XML-ANIMATIONS.md | <AnimationGroup>、基本要素の <Animation>、<Alpha>、<Scale>、<LineScale>、<Translation>、<LineTranslation>、<Path>、<Rotation>、<TextureCoordTranslation> |
簡単な例
画面中央にテクスチャを表示する最小限の XML ファイルです。
<Ui xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/
https://raw.githubusercontent.com/Gethe/wow-ui-source/live/Interface/AddOns/Blizzard_SharedXML/UI.xsd">
<Frame parent="UIParent">
<Size x="64" y="64"/>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Layers>
<Layer level="ARTWORK">
<Texture file="interface/icons/inv_mushroom_11" setAllPoints="true"/>
</Layer>
</Layers>
</Frame>
</Ui>
一般的な XML 属性の型
| XSD 型 | Lua 相当 | 例 |
|---|---|---|
xs:string | string | "MyFrame"、"interface/icons/spell_nature_heal" |
xs:boolean | boolean | "true"、"false" |
xs:int | number(整数) | "0"、"42" |
xs:float | number(浮動小数点数) | "1.0"、"0.5" |
xs:unsignedInt | number(非負の整数) | "0"、"255" |
ui:FRAMEPOINT | string | "CENTER"、"TOPLEFT"、"BOTTOMRIGHT" |
ui:FRAMESTRATA | string | "BACKGROUND"、"LOW"、"MEDIUM"、"HIGH"、"DIALOG"、"FULLSCREEN"、"FULLSCREEN_DIALOG"、"TOOLTIP" |
ui:DRAWLAYER | string | "BACKGROUND"、"BORDER"、"ARTWORK"、"OVERLAY"、"HIGHLIGHT" |
ui:ORIENTATION | string | "HORIZONTAL"、"VERTICAL" |
ui:OUTLINETYPE | string | "NONE"、"NORMAL"、"THICK" |
ui:ALPHAMODE | string | "DISABLE"、"BLEND"、"ALPHAKEY"、"ADD"、"MOD" |
ui:INSERTMODE | string | "TOP"、"BOTTOM" |
ui:JUSTIFYHTYPE | string | "LEFT"、"CENTER"、"RIGHT" |
ui:JUSTIFYVTYPE | string | "TOP"、"MIDDLE"、"BOTTOM" |
ui:ANIMLOOPTYPE | string | "NONE"、"REPEAT"、"BOUNCE" |
ui:ANIMSMOOTHTYPE | string | "NONE"、"IN"、"OUT"、"IN_OUT"、"OUT_IN" |
ui:ANIMCURVETYPE | string | "NONE"、"SMOOTH" |
ui:KEYVALUETYPE | string | "nil"、"boolean"、"number"、"string"、"global" |
ui:WRAPMODE | string | "CLAMP"、"REPEAT"、"CLAMPTOBLACK"、"CLAMPTOBLACKADDITIVE"、"CLAMPTOWHITE"、"MIRROR" |
エディターのセットアップ
WoW XML ファイルのスキーマ検証、オートコンプリート、エラーチェックには、Red Hat XML 拡張機能をインストールした VS Code を使用してください。