Marth is favored in this matchup, and the keys to winning are, as everyone else has mentioned, grabs (Use Fthrow below maybe 20% because it's really hard to escape, then mix up Fthrow and Dthrow for DI traps. Uthrow can set up juggles.) and juggling. Zelda has very few tools to get out of juggles; she falls slowly, her Dair loses to most Utilts, Usmashes, and Uairs (especially Marth's; Zelda's Dair should be a non-issue for you if you're good at spacing, and you should be, since you play Marth), and her teleport has a lot of startup, making it easily punishable. If you can get underneath Zelda, everything gets way easier for you. Make sure you're directly beneath her or in tipper Fair range as you juggle, however. If you end up too close to the side of her, most Zeldas will not hesitate to throw out a Fair or Bair, which could potentially be quite painful.
Other than that, you can swat away her aerial Nayru and kick approaches with Fair, Utilt, or Ftilt, and stuff her grounded approaches with well-spaced Dtilts (don't spam it though or you'll get kicked). As for Din's Fire, Marth has a relatively easy time defusing the mines. Jab will clank them out with minimal commitment and keep you relatively safe. You can also run up and shield to clank them, or use your Fair or Nair to remove aerial mines. Also try to DD camp her at midrange. Zelda has a lot of issues dealing with good DD camping, and it naturally leads into grabs and Dtilts.
Hope this helps; good luck!