Taiwan's ruling Democratic Progressive Party has confounded expectations that corruption scandals would lead to a landslide drubbing by the opposition Kuomintang in mayoral elections at the weekend.
The DPP, which favours more independence for the island, lost in the capital's mayoral race, but by a far lower margin than forecast, and won in its traditional stronghold, Taiwan's second city, Kaohsiung.
All-out victories for the nationalist Kuomintang (KMT), would have been a tremendous boost for the party's prospects in parliamentary elections next year and the 2008 presidential poll. This would have led to a thawing of relations with China, which has considered Taiwan a rebel province ever since Chiang Kai-shek's KMT lost the civil war with Mao Zedong's Communists and fled to the island in 1949.
Beijing has threatened war if the island of 23 million people tries to declare formal independence, while the US has pledged to defend Taiwan against invasion.
Although the KMT is Communist China's traditional arch-rival, its leaders now want more trade with the mainland and support reunification. The DPP has a more antagonistic relationship with China.
The KMT has been trying to regain the presidency since losing the office to Chen Shui-bian in 2000.
The mayoral election result gives Taiwan's embattled President a breathing space and puts pressure on China to start a fresh dialogue with the ruling party.
"The KMT did not win and the DPP did not lose," said David Huang, an analyst at National Taiwan University. "This means a reflection time for both parties. The landslide result didn't happen and this creates uncertainty over the presidential elections in 2008."
The DPP's mayoral candidate in Taipei, Frank Hsieh, lost to Hau Lung-bin of the KMT, which already held the mayorship. However, Mr Hsieh collected nearly 41 per cent of the vote, a much better showing than forecast.
In Kaohsiung, the DPP's Chen Chu beat Nationalist candidate Huang Chun-ying by little more than 1,000 votes and ballot boxes have been sealed for a recount.Reuse content