Modifying chapters....Oh god...

74 replies [Last post]
Joined: 03/13/2012

Can someone help me with creating new chapters? I mean give examples of where and how to put stuff together and such... Because i am making radioactive levels, and having so many levels is just perfect for a new (modified) chapter. Anyone?

Because writing signatures is too mainstream

Joined: 03/13/2012

When i decrypt the island1.xml.bin i get this:

<island name="The Goo Filled Hills" map="island1" icon="IMAGE_GLOBAL_ISLAND_1_ICON">
 
  <level id="GoingUp"
         name="LEVEL_NAME_GOINGUP" 
         text="LEVEL_TEXT_GOINGUP" 
         ocd="balls,11"/>
 
  <level id="EconomicDivide" depends="GoingUp" 
         name="LEVEL_NAME_ECONOMICDIVIDE" 
         text="LEVEL_TEXT_ECONOMICDIVIDE" 
         ocd="balls,16"/>
 
  <level id="HangLow" depends="EconomicDivide" 
         name="LEVEL_NAME_HANGLOW" 
         text="LEVEL_TEXT_HANGLOW"
	    	 ocd="balls,22"
         oncomplete="unlockwogcorp" 
         cutscene="x,wogcunlock,gooTransition_out" />
 
  <level id="ImpaleSticky" depends="HangLow" 
         name="LEVEL_NAME_IMPALESTICKY" 
         text="LEVEL_TEXT_IMPALESTICKY"
		 ocd="balls,42"
		 />
 
  <level id="IvyTower" depends="ImpaleSticky"
         name="LEVEL_NAME_IVYTOWERS" 
         text="LEVEL_TEXT_IVYTOWERS"
		 ocd="balls,16"
		 />
 
  <level id="Tumbler" depends="IvyTower"
         name="LEVEL_NAME_TUMBLER" 
         text="LEVEL_TEXT_TUMBLER"
		 ocd="balls,35"
		 />
 
  <level id="Chain" depends="Tumbler"
         name="LEVEL_NAME_CHAIN" 
         text="LEVEL_TEXT_CHAIN"
		 ocd="balls,25"
		 />
 
  <level id="FlyingMachine" depends="ImpaleSticky"
         name="LEVEL_NAME_FLYINGMACHINE" 
         text="LEVEL_TEXT_FLYINGMACHINE"
		 ocd="time,16"		 />
 
  <level id="FistyReachesOut" depends="FlyingMachine"
         name="LEVEL_NAME_FISTYREACHESOUT" 
         text="LEVEL_TEXT_FISTYREACHESOUT"
		 ocd="moves,14"
		 />
 
  <level id="TowerOfGoo" depends="FistyReachesOut"
         name="LEVEL_NAME_TOWEROFGOO" 
         text="LEVEL_TEXT_TOWEROFGOO"
		 ocd="balls,68"
		 />
 
  <level id="OdeToBridgeBuilder" depends="TowerOfGoo,Chain"
         name="LEVEL_NAME_ODETOBRIDGEBUILDER" 
         text="LEVEL_TEXT_ODETOBRIDGEBUILDER"
		 ocd="balls,38"
		 />
 
  <level id="RegurgitationPumpingStation" depends="OdeToBridgeBuilder"
         name="LEVEL_NAME_REGURGITATIONPUMPINGSTATION" 
         text="LEVEL_TEXT_REGURGITATIONPUMPINGSTATION" 
         cutscene="levelFadeOut,Chapter1End,gooTransition_out" 
    		 ocd="moves,42"
         />
 
 
</island>

What do i do with that? It is obvious that these are the levels of chapter 1. How do i get my own chapters in there????

Because writing signatures is too mainstream

Joined: 07/05/2011

Read the Reference Guide and edit the island.xml.

Joined: 03/13/2012

That is exactly what i did. But it does not give me that much info, or maybe i just do not get it, as i am very new to this.

Because writing signatures is too mainstream

Joined: 12/23/2010

First of all, I recommend editing Chapter 2 not Chapter 1. Only modify Chapter 1 if you really really need to, like in a total conversion or something.

Second of all, I already mentioned in another thread that you can take a look at Puggsoy's Island, a simple addin I made so that people can see how custom chapters work. Take a look at what I've added and changed to see how to make chapters.

We should really make a chapter making tutorial, the problem is that it's quite complicated and it's a lot of work to explain it clearly. Still, more people are starting making chapters so it should get done.

However, before that comes around, just try. I made my chapter using only the current resources, and there's no reason you shouldn't be able to too. Read the reference guide, look how existing chapters are put together, try changing bits and pieces. Either way, you should try and understand as much as you can about goomodding and islands before going on an all-out chapter. Trust me, it's not easy, making levels is a piece of cake in comparison.

Joined: 03/13/2012

What i got from decrypting my island1.xml.bin and the .xsl of your merge directory are completely different. How did you even get the xls?

Because writing signatures is too mainstream

Joined: 04/29/2009

Puggsoy used DavidC's XML Diff Tool (see his signature for a link). However I find xsl files made by that tool hard to understand.
The xsl changes the map and name of the island and the first three levels within the island2.xml.bin. It also deletes the levels 4-11.
A handwritten xsl for Puggsoys chapter would look like this:

<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <!-- Copy everything not matched by another rule -->
  <xsl:template match="* | comment()">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
 
   <!-- Delete existing levels -->
  <xsl:template match="/island/level"/>
 
  <xsl:template match="/island">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
 
      <!-- change name and map attribute -->
       <xsl:attribute name="name">Puggsoy's Island</xsl:attribute>
       <xsl:attribute name="map">pugIsland</xsl:attribute>
      <xsl:apply-templates/>
 
      <!-- Here is where you can insert your levels -->
 
	<level id="Climb" name="LEVEL_NAME_CLIMB" text="LEVEL_TEXT_CLIMB" ocd="balls,10"/>
	<level id="Hang" depends="Climb" name="LEVEL_NAME_HANG" text="LEVEL_TEXT_HANG" ocd="balls,5"/>
 	<level id="Drop" depends="Hang" name="LEVEL_NAME_DROP" text="LEVEL_TEXT_DROP"/>
 
    </xsl:copy>
  </xsl:template>
</xsl:transform>

It's shorter and easier to understand.

Joined: 08/06/2010

XSL is sort of a way to tell GooTool what to do to an EXISTING file. In English, what that example says is something like:

  1. If I don't tell you do do something to an object, copy it unchanged.
  2. Don't do anything (don't even copy) to any level tag inside an island tag.
  3. If an attribute of an island tag is named "name", change it to "Puggsoy's Island".
  4. If an attribute of an island tag is named "map", change it to "pugIsland".
  5. After all that, write into the file the following:
    1. A level called Climb
    2. A level called Hang, depending on Climb
    3. A level called Drop, depending on Hang
  6. Then save the new file.

XSL just tells the computer how to do that, in an easy-to-understand (and very powerful) way.

Another Planet finally has an official release! Download chapters 1 through 3 here! Thank you for waiting so long while I kept starting over.

Joined: 12/23/2010

I just use David's tool because I can't be bothered learning XSL, and as long as I don't edit the file myself it doesn't really matter how clean or ugly it is Wink

But seriously, we've talked about XSL before in another thread. I talked about David's tool and everything. What the XSL does is transform the island2.xml.bin (not island1) into a different one, which contains my island's information.

By the way, have you tried understanding this page yet? It really explains a lot.

Joined: 03/13/2012

Error transforming res/islands/island2.xml.xsl:
could not compile stylesheet.

Because writing signatures is too mainstream

Joined: 09/01/2009

Means there's a syntax error someplace in the XSL. Paste the XSL file between <code> and </code> tags so we can look at it and see what's wrong.

Joined: 03/13/2012

But wait... I think i know what is wrong... Just in case here is my code:

<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <xsl:template match="* | comment()">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
 
  <xsl:template match="/island/level"/>
 
  <xsl:template match="/island">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
 
       <xsl:attribute name="name">Radioacitve Chaoter</xsl:attribute>
       <xsl:attribute name="map">RDChapter1</xsl:attribute>
      <xsl:apply-templates/>
 
	<level id="RDLevel1" name="LEVEL_NAME_RDLevel1" text="LEVEL_TEXT_RDLevel1" />
	<level id="RDLevel2" depends="RDLevel1" name="LEVEL_NAME_RDLevel2" text="LEVEL_TEXT_RDLevel2" />
 	<level id="RDLevel3" depends="RDLevel2" name="LEVEL_NAME_RDLevel3" text="LEVEL_TEXT_RDLevel3"/>
 
    </xsl:copy>
  </xsl:template>
</xsl:transform>

But, since i made it on text edit, it might be the problem. How do you create xsl files? (i cannot save as xsl)

Because writing signatures is too mainstream

Joined: 12/23/2010

Just rename the file to island2.xml.xsl. Make sure that you can see file extensions though. If you don't know how to look it up on Google, I don't know which OS you're using.

Joined: 03/13/2012

That is what i did.... But did you find ay problems in the code? Anyways... My Safari (the default app for opening .xsl files) could open your island2, but not mine. Sad

Because writing signatures is too mainstream

Joined: 04/29/2009

Maybe it's the typo here:
 <xsl:attribute name="name">Radioacitve Chaoter</xsl:attribute>
It says Chaoter not Chapter.
Is there a folder in the compile root of your goomod called RDChapter1 including RDChapter1.level.xml; RDChapter1.scene.xml and RDChapter1.resrc.xml?

Do you have your levelnames and leveltexts defined in the text.xml?
It should look something like:

<string id="LEVEL_NAME_RDLevel1" text="Your level name"/>
<string id="LEVEL_TEXT_RDLevel1" text="Your level text"/>

puggsoy wrote:
... and as long as I don't edit the file myself it doesn't really matter how clean or ugly it is Wink
...

But I think people might want to have a nice and shiny example in a sample so they could just fill in their levels and other attributes.

edit: err, why didn't I use the edit button? Puzzled Merged. -AP

Joined: 08/06/2010

One other thing which wouldn't stop it from working but which is really annoying: resource names, including text strings, should be in ALL CAPITAL LETTERS. It just makes it easier to debug.

Also, are you sure that encoding matches what you actually used? Switch to UTF-8 just to be safe, and see if that works. (Force the file itself to switch by adding in a widechar or something.)

Another Planet finally has an official release! Download chapters 1 through 3 here! Thank you for waiting so long while I kept starting over.

Joined: 03/13/2012

Quote:
Do you have your levelnames and leveltexts defined in the text.xml?
It should look something like:
<string id="LEVEL_NAME_RDLevel1" text="Your level name"/>
<string id="LEVEL_TEXT_RDLevel1" text="Your level text"/>

That is confusing...... Well, as for the rest, yes my island "level" IS called RDChapter1. That is the levelname.

Because writing signatures is too mainstream

Joined: 04/29/2009

Is there a file called text.xml in your goomod? If yes open it and check if there are those two lines for each level? If not create file called text.xml.

<strings>
<string id="LEVEL_NAME_RDLEVEL1" text="Your level name1"/>
<string id="LEVEL_TEXT_RDLEVEL1" text="your level text1"/>
<string id="LEVEL_NAME_RDLEVEL2" text="Your level name2"/>
<string id="LEVEL_TEXT_RDLEVEL2" text="Your level text2"/>
<string id="LEVEL_NAME_RDLEVEL3" text="..."/>
<string id="LEVEL_TEXT_RDLEVEL3" text="..."/>
</strings>

Joined: 03/13/2012

What i get form puggosoy's .xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output encoding="UTF-8"/>
  <!--Select all nodes-->
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="/island[1]/@name">
    <xsl:attribute name="name">Puggsoy's Island</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/@map">
    <xsl:attribute name="map">pugIsland</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[1]/@id">
    <xsl:attribute name="id">Climb</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[1]/@depends"/>
  <xsl:template match="/island[1]/level[1]/@name">
    <xsl:attribute name="name">LEVEL_NAME_CLIMB</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[1]/@text">
    <xsl:attribute name="text">LEVEL_TEXT_CLIMB</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[1]/@ocd">
    <xsl:attribute name="ocd">balls,10</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[2]/@id">
    <xsl:attribute name="id">Hang</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[2]/@depends">
    <xsl:attribute name="depends">Climb</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[2]/@name">
    <xsl:attribute name="name">LEVEL_NAME_HANG</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[2]/@text">
    <xsl:attribute name="text">LEVEL_TEXT_HANG</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[2]/@ocd">
    <xsl:attribute name="ocd">balls,5</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[3]/@id">
    <xsl:attribute name="id">Drop</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[3]/@depends">
    <xsl:attribute name="depends">Hang</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[3]/@name">
    <xsl:attribute name="name">LEVEL_NAME_DROP</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[3]/@text">
    <xsl:attribute name="text">LEVEL_TEXT_DROP</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[3]/@ocd"/>
  <xsl:template match="/island[1]/text()[4]"/>
  <xsl:template match="/island[1]/level[4]"/>
  <xsl:template match="/island[1]/text()[5]"/>
  <xsl:template match="/island[1]/level[5]"/>
  <xsl:template match="/island[1]/text()[6]"/>
  <xsl:template match="/island[1]/level[6]"/>
  <xsl:template match="/island[1]/text()[7]"/>
  <xsl:template match="/island[1]/level[7]"/>
  <xsl:template match="/island[1]/text()[8]"/>
  <xsl:template match="/island[1]/level[8]"/>
  <xsl:template match="/island[1]/text()[9]"/>
  <xsl:template match="/island[1]/level[9]"/>
  <xsl:template match="/island[1]/text()[10]"/>
  <xsl:template match="/island[1]/level[10]"/>
  <xsl:template match="/island[1]/text()[11]"/>
  <xsl:template match="/island[1]/level[11]"/>
</xsl:stylesheet>

What my code is:

<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <xsl:template match="* | comment()">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
 
  <xsl:template match="/island/level"/>
 
  <xsl:template match="/island">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
 
       <xsl:attribute name="name">Radioacitve Chapter</xsl:attribute>
       <xsl:attribute name="map">RDChapter1</xsl:attribute>
      <xsl:apply-templates/>
 
	<level id="RDLevel1" name="LEVEL_NAME_RDLevel1" text="LEVEL_TEXT_RDLevel1" />
	<level id="RDLevel2" depends="RDLevel1" name="LEVEL_NAME_RDLevel2" text="LEVEL_TEXT_RDLevel2" />
 	<level id="RDLevel3" depends="RDLevel2" name="LEVEL_NAME_RDLevel3" text="LEVEL_TEXT_RDLevel3"/>
 
    </xsl:copy>
  </xsl:template>
</xsl:transform>

What the..?

Because writing signatures is too mainstream

Joined: 04/29/2009

Not the island2.xml.xsl but the text.xml. It should be where the override, compile and merge folder is.

Joined: 03/13/2012

No, no! we typed them at the same time. that is what i hav for text.xml after you told me to change it. is that ok

<!-- Created by WooGLE v0.78 RC3 -->
<strings>
<string id="TEXT_RDLEVEL1_STR1" text="Am i having a deja vu? That head seems familliar.|Anyways.| There is some new goo up there. I suspect its water-shadow goo.| They form when water and shadow goo fuse.| They are light and can reach in narrow places like water goo.| And the brightly glowing sleeping goo above hem is water goo. | -The knowlageable Sign painter." />
<string id="TEXT_RDLEVEL3_STR1" text="I just figured:| The radioactive goo contain a lot of energy.| look at that lightbulb goo| every time it connects with the radioactive goo it starts shining!| pretty usefull!| Oh and...| The pipe only wants the lighbulb goo| Maybe that means it can be used for more things...| Or that the pipe likes lightbulbs...| - the Sign painter" />
<string id="LEVEL_NAME_RDLEVEL1" text="The falling Head"/>
<string id="LEVEL_TEXT_RDLEVEL1" text="A deja vu"/>
<string id="LEVEL_NAME_RDLEVEL2" text="Couple o' dominos"/>
<string id="LEVEL_TEXT_RDLEVEL2" text="Simple as goo pie"/>
<string id="LEVEL_NAME_RDLEVEL3" text="Lightbulbs"/>
<string id="LEVEL_TEXT_RDLEVEL3" text="Try it out!"/>
</strings>

EDIT:
You know, i guess i might have to be walked through the whole process. But only once. The same as with custom pipes, it is only hard when you do not know how to do it - when ou learn you can do it a million times.

Because writing signatures is too mainstream

Joined: 08/06/2010

Looks good, then. Have you changed the text in the island XSL? It's correct in the text.xml, but it needs to match.

Another Planet finally has an official release! Download chapters 1 through 3 here! Thank you for waiting so long while I kept starting over.

Joined: 03/13/2012

Now this is my island2.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <xsl:template match="* | comment()">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
 
  <xsl:template match="/island/level"/>
 
  <xsl:template match="/island">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
 
       <xsl:attribute name="name">Radioacitve Chapter</xsl:attribute>
       <xsl:attribute name="map">RDChapter1</xsl:attribute>
      <xsl:apply-templates/>
 
	<level id="RDLevel1" name="LEVEL_NAME_RDLEVEL1" text="LEVEL_TEXT_RDLEVEL1" />
	<level id="RDLevel2" depends="RDLevel1" name="LEVEL_NAME_RDLEVEL2" text="LEVEL_TEXT_RDLEVEL2" />
 	<level id="RDLevel3" depends="RDLevel2" name="LEVEL_NAME_RDLEVEL3" text="LEVEL_TEXT_RDLEVEL3"/>
 
    </xsl:copy>
  </xsl:template>
</xsl:transform>

There. Is that good? It does match with the text.xml too!

Because writing signatures is too mainstream

Joined: 04/29/2009

It also has to match with the level folders.

Joined: 08/06/2010

Good point. Are your levels called "RDLevel1", "RDLevel2", and "RDLevel3", exactly?

And do you have a legal map "RDChapter1"?

Another Planet finally has an official release! Download chapters 1 through 3 here! Thank you for waiting so long while I kept starting over.

Joined: 03/13/2012

Yep. The level folder names match.

Because writing signatures is too mainstream

Joined: 04/29/2009

Ok then. Does it work now?
If not what is your addin.xml like?

Joined: 03/13/2012

Wait a second, i am not doen with making all the levels into the goomod. I need to add all the levels to the addin.xml, and make sure that the names and the ocd's and stuff match. I will tell you when i am done.

Because writing signatures is too mainstream

Joined: 04/29/2009

No no, the levels must not be in the addin.xml. You define the name and text in text.xml and ocd and stuff in island2.xml.xsl.
Take a look at puggsoys addin.xml.

<addin spec-version="1.1">
 
<id>com.goofans.puggsoy.PuggsoysIsland</id>
 
<name>Puggsoy's Island</name>
 
<type>mod</type>
 
<!-- May put a thumbnail in later version -->
 
<version>1.0</version>
 
<description><![CDATA[
<html>
My first custom chapter, basically a section of Chapter 2 containing three levels. Primarily a test to see how chapters work and how to make one.
</html>
]]></description>
 
<author>puggsoy</author>
 
</addin>

Note the type, it's mod not level.

Joined: 03/13/2012

Could not compile stylesheet. could you possibly save this as an xsl for me?
It seems like every time i change the extension it changes the whole file.

<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <xsl:template match="* | comment()">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
 
  <xsl:template match="/island/level"/>
 
  <xsl:template match="/island">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
 
       <xsl:attribute name="name">Radioacitve Chapter</xsl:attribute>
       <xsl:attribute name="map">RDChapter1</xsl:attribute>
      <xsl:apply-templates/>
 
	<level id="RDLevel1" name="LEVEL_NAME_RDLEVEL1" text="LEVEL_TEXT_RDLEVEL1" />
	<level id="RDLevel2" depends="RDLevel1" name="LEVEL_NAME_RDLEVEL2" text="LEVEL_TEXT_RDLEVEL2" />
 	<level id="RDLevel3" depends="RDLevel2" name="LEVEL_NAME_RDLEVEL3" text="LEVEL_TEXT_RDLEVEL3"/>
 
    </xsl:copy>
  </xsl:template>
</xsl:transform>

PLUS as i said....

nothinggoo wrote:
What i get form puggosoy's .xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output encoding="UTF-8"/>
  <!--Select all nodes-->
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="/island[1]/@name">
    <xsl:attribute name="name">Puggsoy's Island</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/@map">
    <xsl:attribute name="map">pugIsland</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[1]/@id">
    <xsl:attribute name="id">Climb</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[1]/@depends"/>
  <xsl:template match="/island[1]/level[1]/@name">
    <xsl:attribute name="name">LEVEL_NAME_CLIMB</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[1]/@text">
    <xsl:attribute name="text">LEVEL_TEXT_CLIMB</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[1]/@ocd">
    <xsl:attribute name="ocd">balls,10</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[2]/@id">
    <xsl:attribute name="id">Hang</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[2]/@depends">
    <xsl:attribute name="depends">Climb</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[2]/@name">
    <xsl:attribute name="name">LEVEL_NAME_HANG</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[2]/@text">
    <xsl:attribute name="text">LEVEL_TEXT_HANG</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[2]/@ocd">
    <xsl:attribute name="ocd">balls,5</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[3]/@id">
    <xsl:attribute name="id">Drop</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[3]/@depends">
    <xsl:attribute name="depends">Hang</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[3]/@name">
    <xsl:attribute name="name">LEVEL_NAME_DROP</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[3]/@text">
    <xsl:attribute name="text">LEVEL_TEXT_DROP</xsl:attribute>
  </xsl:template>
  <xsl:template match="/island[1]/level[3]/@ocd"/>
  <xsl:template match="/island[1]/text()[4]"/>
  <xsl:template match="/island[1]/level[4]"/>
  <xsl:template match="/island[1]/text()[5]"/>
  <xsl:template match="/island[1]/level[5]"/>
  <xsl:template match="/island[1]/text()[6]"/>
  <xsl:template match="/island[1]/level[6]"/>
  <xsl:template match="/island[1]/text()[7]"/>
  <xsl:template match="/island[1]/level[7]"/>
  <xsl:template match="/island[1]/text()[8]"/>
  <xsl:template match="/island[1]/level[8]"/>
  <xsl:template match="/island[1]/text()[9]"/>
  <xsl:template match="/island[1]/level[9]"/>
  <xsl:template match="/island[1]/text()[10]"/>
  <xsl:template match="/island[1]/level[10]"/>
  <xsl:template match="/island[1]/text()[11]"/>
  <xsl:template match="/island[1]/level[11]"/>
</xsl:stylesheet>

What my code is:

<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <xsl:template match="* | comment()">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
 
  <xsl:template match="/island/level"/>
 
  <xsl:template match="/island">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
 
       <xsl:attribute name="name">Radioacitve Chapter</xsl:attribute>
       <xsl:attribute name="map">RDChapter1</xsl:attribute>
      <xsl:apply-templates/>
 
	<level id="RDLevel1" name="LEVEL_NAME_RDLevel1" text="LEVEL_TEXT_RDLevel1" />
	<level id="RDLevel2" depends="RDLevel1" name="LEVEL_NAME_RDLevel2" text="LEVEL_TEXT_RDLevel2" />
 	<level id="RDLevel3" depends="RDLevel2" name="LEVEL_NAME_RDLevel3" text="LEVEL_TEXT_RDLevel3"/>
 
    </xsl:copy>
  </xsl:template>
</xsl:transform>

What the..?

Why is that?

Because writing signatures is too mainstream

Joined: 04/29/2009

I use pspad editor for making xml and xsl files. http://www.pspad.com/en/download.php
Don't worry it's free.

And why is what, the difference between your and puggsoys xsl file?
as said before puggsoy used DavidC' xml diff tool. There are many ways with xsl to get the same result.